由于使用了表单,我有一个依赖于 ISE 的 powershell 脚本(在普通控制台中无法正常工作)。
脚本运行时,有时可能需要长达 10 分钟才能完成脚本。但这并不是真正的问题...但是如果 Powershell ISE 打开并且 RDP 连接丢失(例如,另一个用户连接到会话),PowerShell ISE 变得无响应并且脚本似乎不再运行。我在具有不同实例的本地计算机上也有相同的情况。例如,如果我锁定了我的电脑,它也会发生。
奇怪的是,我仍然可以右键单击 powershell ISE 任务栏条目并获得弹出窗口。即使 [x] 不再起作用,我也可以从这里关闭。如果我以这种方式关闭,并且脚本中有更改,Powershell ISE 会询问我是否要保存更改并这样做,但任何其他形式的交互似乎都是不可能的。
有谁知道我可以做些什么来解决这个问题?有什么方法可以更新 PowerShell ISE?
服务器是 Windows Server 2016,我的电脑是 Windows 10 Pro x64 v2004
至于这个……
根据设计,PowerShell.exe 无法原生显示表单。为了能够显示表单,我们需要在脚本的最顶部添加一行代码以支持 WinForm/WPF 表单的呈现。
ISE 使用 powershell_ise.exe,而不是 powershell.exe 或 pwsh.exe(PowerShell 核心)。
你的 UX/UI 代码不应该依赖于代码编辑器来运行。
这在整个 Web 上的 PowerShell 帮助文件中有详细记录。ISE 会自动加载 UX/UI 模块/命名空间,而控制台主机不会。
然而,加载上述所有内容并赋予它们带来的灵活性并不会伤害/影响任何东西。请参阅每个文档。
至于这个……
...这不是 UX/UI 问题,这是我们的后端代码,无论您是否有 UX/UI,都需要这么长时间。
至于这个……
...如果您的后端代码停止/挂起,那么您的 UX/UI 不知道发生了什么,并等待您的后端代码告诉它做某事。UX/UI 不是代码监视器,不知道您的后端代码在做什么。UX/UI 只是结果的显示。如果它没有得到响应的动作/事件,它会按设计锁定。此外,默认情况下,RDS/RDP 登录到服务器一次不超过两个连接,其中包括控制台。因此,除非您为每个所需的连接许可证购买和部署完整的 RDS 许可证,否则您会被所见所闻所困。
ISE(或其他代码编辑器)是脚本的编辑器/设计器,而不是脚本的执行。虽然您可以在那里测试您的代码,但这是出于调试目的,而不是生产。
您在 ISE/VSCode 等中编写代码,但您的目标运行/执行环境是控制台主机。任何用户都不应该打开代码编辑器来运行您的代码。
至于这个……
...
MS 表示,尽管 PowerShell v5x 和 ISE 没有更多的工作;WinPS 和 ISE 将成为今天的样子,并且在可预见的将来它们将在 OS/.Net 完整版本中出现。所以,喜欢 PSv5 和 ISE 的人可以继续使用它。
因此,跨平台 PowerShell Core(也就是目前用于 Windows/OSX/Linux 的 PowerShell v7)的所有努力。
PowerShell Core 没有 ISE。PowerShell 核心的编辑器是 Visual Studio Code,要将 PowerShell 与 VSCode 结合使用,您需要安装 PowerShell Extension。
好吧,如果您愿意,您实际上可以通过 PowerShell RunSpaces 将 ISE 与 Powershell Core 一起使用。就是这样:
然而,使用 VSCode,您可以同时在同一个编辑器中打开多个 shell,这有其优势。
YouTube
尽管如此,以上都没有消除对 GUI 命名空间或脚本中其他引用的需要。当您使用 UX/UI 内容时,您应该始终在默认使用的任何代码编辑器中使用它们。
最后,对于长时间运行的脚本,您应该真正考虑使用 PowerShell 后台作业。