kubectl exec 命令在 powershell ISE 中不起作用(在 powershell 中起作用)- 是否有理由或解决方法使其起作用?
kubectl exec command not working from powershell ISE (works from powershell) - Is there a reason or workaround to make it work?
我最近开始使用 Kubernetes 和 Docker,但对它的工作原理还是陌生的。我已经制作了一个 ps1 脚本来 运行 在 Kubernetes 上构建图像和执行图像所需的所有步骤。
我看到的是所有步骤在 ISE 上都运行良好(除了这个:"kubectl exec -it test-runner pwsh")。仅对于这一步,我就必须 运行 在另一个 PowerShell window 上执行它。
当我在 ISE 中 运行 这一步时,脚本保持 运行ning 而不会给出任何错误或停止。
有谁知道在 ISE 上工作的 Kubernetes 是否有限制,或者是否有解决方法让它工作?
使用 ISE 很快,为我节省了大量时间,所以当我每次都必须在单独的 PowerShell 中复制、粘贴、输入时,这真的很重要 window。
在此先感谢您的帮助!
P.S:我查看了其他建议的类似 questions/answers 和 none,其中似乎与不在 ISE 上运行的 Kubernetes 有关。因此这个问题。
命令:
kubectl exec -it test-runner pwsh
预期(当从 PowerShell 控制台 运行ning 时实际):
----------------------
PS C:\windows\system32> kubectl exec -it test-runner pwsh
PowerShell 6.2.2
Copyright (c) Microsoft Corporation. All rights reserved.
https://aka.ms/pscore6-docs
Type 'help' to get help.
PS /test>
-----------------------------
Actual (when running from PowerShell ISE):
PS C:\SourceCodeTLM\Apollo> kubectl exec -it test-runner pwsh
PowerShell 6.2.2
Copyright (c) Microsoft Corporation. All rights reserved.
https://aka.ms/pscore6-docs
Type 'help' to get help.
(with a blinking cursor and script running without breaking and changing to the new path)...
-----------------------------------------------
PowerShell ISE 不支持 interactive 控制台应用程序,这尤其意味着您无法从中启动其他 shell。
ISE 试图通过拒绝启动众所周知的 shell 来预测该问题。
例如,尝试启动 cmd.exe
失败并显示以下错误消息:
Cannot start "cmd". Interactive console applications are not supported.
To run the application, use the Start-Process cmdlet or use
"Start PowerShell.exe" from the File menu.
注:
pwsh.exe
,PowerShell (Core) 7+的CLI,在知名shell中不是,说明ISE's obsolescent status. It is being superseded by Visual Studio Code with the PowerShell extension.
但是,ISE 不可能检测到给定命令(最终)调用交互式控制台应用程序的所有情况;如果没有,则尝试调用命令,导致模糊的错误消息,或者像您的情况一样挂起。
正如错误消息所暗示的那样,您必须 运行 交互式控制台应用程序 在 ISE 之外,在常规控制台 window 中。
从 ISE 您可以使用 Start-Process
在新的常规控制台中启动程序 window;在手头的案例中:
Start-Process kubectl 'exec -it test-runner pwsh'
或者、运行 您在 ISE 之外的 PowerShell 会话开始,例如在常规控制台 window、Windows 终端, 或者在 Visual Studio 代码的集成终端中。
深入挖掘后,我找到了一种与交互式控制台应用程序进行交互的方法。
我们可以SendKeys('key_here')
具体应用。
您可以从 PowerShell 打开命令 window,然后发送命令打开 shell。
Start-Process PowerShell -Wait "-NoProfile -ExecutionPolicy Bypass -Command `"kubectl exec helloworld-web-8495f4c888-jw2tg -n local-v1 -it -- /bin/bash`""
我最近开始使用 Kubernetes 和 Docker,但对它的工作原理还是陌生的。我已经制作了一个 ps1 脚本来 运行 在 Kubernetes 上构建图像和执行图像所需的所有步骤。
我看到的是所有步骤在 ISE 上都运行良好(除了这个:"kubectl exec -it test-runner pwsh")。仅对于这一步,我就必须 运行 在另一个 PowerShell window 上执行它。
当我在 ISE 中 运行 这一步时,脚本保持 运行ning 而不会给出任何错误或停止。
有谁知道在 ISE 上工作的 Kubernetes 是否有限制,或者是否有解决方法让它工作?
使用 ISE 很快,为我节省了大量时间,所以当我每次都必须在单独的 PowerShell 中复制、粘贴、输入时,这真的很重要 window。
在此先感谢您的帮助!
P.S:我查看了其他建议的类似 questions/answers 和 none,其中似乎与不在 ISE 上运行的 Kubernetes 有关。因此这个问题。
命令:
kubectl exec -it test-runner pwsh
预期(当从 PowerShell 控制台 运行ning 时实际):
----------------------
PS C:\windows\system32> kubectl exec -it test-runner pwsh
PowerShell 6.2.2
Copyright (c) Microsoft Corporation. All rights reserved.
https://aka.ms/pscore6-docs
Type 'help' to get help.
PS /test>
-----------------------------
Actual (when running from PowerShell ISE):
PS C:\SourceCodeTLM\Apollo> kubectl exec -it test-runner pwsh
PowerShell 6.2.2
Copyright (c) Microsoft Corporation. All rights reserved.
https://aka.ms/pscore6-docs
Type 'help' to get help.
(with a blinking cursor and script running without breaking and changing to the new path)...
-----------------------------------------------
PowerShell ISE 不支持 interactive 控制台应用程序,这尤其意味着您无法从中启动其他 shell。
ISE 试图通过拒绝启动众所周知的 shell 来预测该问题。
例如,尝试启动 cmd.exe
失败并显示以下错误消息:
Cannot start "cmd". Interactive console applications are not supported.
To run the application, use the Start-Process cmdlet or use
"Start PowerShell.exe" from the File menu.
注:
pwsh.exe
,PowerShell (Core) 7+的CLI,在知名shell中不是,说明ISE's obsolescent status. It is being superseded by Visual Studio Code with the PowerShell extension.
但是,ISE 不可能检测到给定命令(最终)调用交互式控制台应用程序的所有情况;如果没有,则尝试调用命令,导致模糊的错误消息,或者像您的情况一样挂起。
正如错误消息所暗示的那样,您必须 运行 交互式控制台应用程序 在 ISE 之外,在常规控制台 window 中。
从 ISE 您可以使用 Start-Process
在新的常规控制台中启动程序 window;在手头的案例中:
Start-Process kubectl 'exec -it test-runner pwsh'
或者、运行 您在 ISE 之外的 PowerShell 会话开始,例如在常规控制台 window、Windows 终端, 或者在 Visual Studio 代码的集成终端中。
深入挖掘后,我找到了一种与交互式控制台应用程序进行交互的方法。
我们可以SendKeys('key_here')
具体应用。
您可以从 PowerShell 打开命令 window,然后发送命令打开 shell。
Start-Process PowerShell -Wait "-NoProfile -ExecutionPolicy Bypass -Command `"kubectl exec helloworld-web-8495f4c888-jw2tg -n local-v1 -it -- /bin/bash`""