AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1652170
Accepted
LPChip
LPChip
Asked: 2021-05-29 04:38:24 +0800 CST2021-05-29 04:38:24 +0800 CST 2021-05-29 04:38:24 +0800 CST

如果 RDP 连接丢失,Powershell ISE 会在脚本执行期间冻结

  • 772

由于使用了表单,我有一个依赖于 ISE 的 powershell 脚本(在普通控制台中无法正常工作)。

脚本运行时,有时可能需要长达 10 分钟才能完成脚本。但这并不是真正的问题...但是如果 Powershell ISE 打开并且 RDP 连接丢失(例如,另一个用户连接到会话),PowerShell ISE 变得无响应并且脚本似乎不再运行。我在具有不同实例的本地计算机上也有相同的情况。例如,如果我锁定了我的电脑,它也会发生。

奇怪的是,我仍然可以右键单击 powershell ISE 任务栏条目并获得弹出窗口。即使 [x] 不再起作用,我也可以从这里关闭。如果我以这种方式关闭,并且脚本中有更改,Powershell ISE 会询问我是否要保存更改并这样做,但任何其他形式的交互似乎都是不可能的。

有谁知道我可以做些什么来解决这个问题?有什么方法可以更新 PowerShell ISE?

服务器是 Windows Server 2016,我的电脑是 Windows 10 Pro x64 v2004

powershell
  • 1 1 个回答
  • 974 Views

1 个回答

  • Voted
  1. Best Answer
    postanote
    2021-05-29T13:32:10+08:002021-05-29T13:32:10+08:00

    至于这个……

    由于使用了表单,我有一个依赖于 ISE 的 powershell 脚本(在普通控制台中无法正常工作)。

    根据设计,PowerShell.exe 无法原生显示表单。为了能够显示表单,我们需要在脚本的最顶部添加一行代码以支持 WinForm/WPF 表单的呈现。

    ISE 使用 powershell_ise.exe,而不是 powershell.exe 或 pwsh.exe(PowerShell 核心)。

    你的 UX/UI 代码不应该依赖于代码编辑器来运行。

    Add-Type -AssemblyName  Microsoft.VisualBasic,
                            PresentationCore,
                            PresentationFramework,
                            System.Drawing,
                            System.Windows.Forms,
                            WindowsBase,
                            WindowsFormsIntegration
    
    [System.Windows.Forms.Application]::EnableVisualStyles()
    

    这在整个 Web 上的 PowerShell 帮助文件中有详细记录。ISE 会自动加载 UX/UI 模块/命名空间,而控制台主机不会。

    您不需要列表中的所有内容,具体取决于您在 UX/UI/Form 实现中所做的事情。

    然而,加载上述所有内容并赋予它们带来的灵活性并不会伤害/影响任何东西。请参阅每个文档。

    至于这个……

    脚本运行时,有时可能需要长达 10 分钟才能完成脚本

    ...这不是 UX/UI 问题,这是我们的后端代码,无论您是否有 UX/UI,都需要这么长时间。

    至于这个……

    但是,如果 Powershell ISE 打开并且 RDP 连接丢失(例如,另一个用户连接到会话),PowerShell ISE 变得无响应

    ...如果您的后端代码停止/挂起,那么您的 UX/UI 不知道发生了什么,并等待您的后端代码告诉它做某事。UX/UI 不是代码监视器,不知道您的后端代码在做什么。UX/UI 只是结果的显示。如果它没有得到响应的动作/事件,它会按设计锁定。此外,默认情况下,RDS/RDP 登录到服务器一次不超过两个连接,其中包括控制台。因此,除非您为每个所需的连接许可证购买和部署完整的 RDS 许可证,否则您会被所见所闻所困。

    ISE(或其他代码编辑器)是脚本的编辑器/设计器,而不是脚本的执行。虽然您可以在那里测试您的代码,但这是出于调试目的,而不是生产。

    您在 ISE/VSCode 等中编写代码,但您的目标运行/执行环境是控制台主机。任何用户都不应该打开代码编辑器来运行您的代码。

    至于这个……

    有谁知道我可以做些什么来解决这个问题?有什么方法可以更新 PowerShell ISE?

    ...

    1. 不要在 ISE 中运行此代码,除非您正在设计/调试/测试它?
    2. 将 UX/UI 命名空间添加到脚本的顶部。
    3. ISE 没有更新。根据 MS,当前版本的 Windows PowerShell 5x 和相关的 ISE 已折旧。这意味着,除了错误/安全修复之外,它们中的任何一个都没有更多的工作。

    MS 表示,尽管 PowerShell v5x 和 ISE 没有更多的工作;WinPS 和 ISE 将成为今天的样子,并且在可预见的将来它们将在 OS/.Net 完整版本中出现。所以,喜欢 PSv5 和 ISE 的人可以继续使用它。

    PowerShell 6.0 路线图:CoreCLR、向后兼容性等!

    ***Windows PowerShell 的未来

    Windows PowerShell 5.1 与 .NET Framework 4.x 非常相似,将继续 > 成为 Windows 10 和 Windows Server 2016 的内置支持组件。

    但是,它可能不会> 接收主要功能更新或较低-> 优先级错误修复***。

    借助 > PowerShell Core,我们正在积极解决以前版本的 Windows PowerShell 中可能存在的错误。我们甚至对贡献持开放态度,以便我们社区的成员可以修复这些错误。

    Windows Management Framework (WMF) 的发布版本的支持周期没有变化。

    因此,跨平台 PowerShell Core(也就是目前用于 Windows/OSX/Linux 的 PowerShell v7)的所有努力。

    PowerShell Core 没有 ISE。PowerShell 核心的编辑器是 Visual Studio Code,要将 PowerShell 与 VSCode 结合使用,您需要安装 PowerShell Extension。

    好吧,如果您愿意,您实际上可以通过 PowerShell RunSpaces 将 ISE 与 Powershell Core 一起使用。就是这样:

    https://old.ironmansoftware.com/using-powershell-core-6-and-7-in-the-windows-powershell-ise

    然而,使用 VSCode,您可以同时在同一个编辑器中打开多个 shell,这有其优势。

    YouTube

    '用于 VSCode 的 PowerShell' https://www.youtube.com/results?search_query=powershel+for+vscode

    尽管如此,以上都没有消除对 GUI 命名空间或脚本中其他引用的需要。当您使用 UX/UI 内容时,您应该始终在默认使用的任何代码编辑器中使用它们。

    最后,对于长时间运行的脚本,您应该真正考虑使用 PowerShell 后台作业。

    'PowerShell 作业长时间运行的脚本'

    https://duckduckgo.com/?q=%27powershell+jobs+long+running+scripts%27&t=h_&ia=web

    • 2

相关问题

  • 如何将变量字符串放入powershell中的数组?

  • Powershell 和正则表达式:Notepad++“保存时备份”文件列表。编辑名称,按上次写入时间排序

  • 将前景颜色添加到 Powershell 配置文件?

  • 禁用后无法启用 Microsoft Print to PDF

  • 我可以让这个 PowerShell 脚本接受逗号吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve