标签: sysinternals

什么会导致“PowerShell.exe”在多个系统上打开时挂起和/或如何解决它?

什么会导致“PowerShell.exe”在多个系统上打开时挂起?

我已经等了 60 多分钟,但它从未完全启动。它所做的只是显示带有典型 PowerShell 启动输出的蓝色 shell 窗口:

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
Run Code Online (Sandbox Code Playgroud)

然后它就挂了。我怀疑这实际上不是 PowerShell 问题,而是其他原因,例如 .NET 或 McAfee,但我不知道。

我已经尝试以任何我知道的方式启动 PowerShell,但无论我尝试什么,到目前为止我找到的唯一解决方法是重新启动系统。如果不是在服务器上,重新启动可能是一个可以接受的修复,并且问题永远不会再出现,但是它最终会在一段时间后(可能几周后)返回。我在很多服务器上都看到过这个。超过 15 个,但我不确定到底有多少。我猜我们的服务器至少有一半,所以至少有 40 台左右的服务器。它发生在 Windows Server 2016 和 2019 上,但我不记得在我们的任何 2012 R2 服务器上看到它发生。

这导致我们的“早晨检查”脚本出现问题,该脚本尝试使用“New-PSSession”在 foreach 循环中检查多台服务器上的最后一个 Windows Server 备份,如下所示:

$rsession = New-PSSession -ComputerName $Server -ErrorAction Stop; 
Invoke-Command -Session $rsession -ScriptBlock {...}
Run Code Online (Sandbox Code Playgroud)

脚本块非常小/简单(只有几个“Get-WBJob”命令)。一旦脚本到达遇到此问题的第一台服务器,它就会无限期挂起(同样,我已经等了 60 多分钟)。如果我重新启动该远程系统,它会继续运行,直到到达另一个遇到此问题的远程系统为止。如果不是脚本,我只是尝试这样的事情,我会遇到同样的结果(挂起):

Enter-PSSession -ComputerName Server2
Run Code Online (Sandbox Code Playgroud)

在遇到问题的系统上,我尝试通过以下方式从 cmd 启动 powershell 可执行文件,没有任何区别:

start PowerShell.exe -NoProfile
start PowerShell.exe -NoProfile -ExecutionPolicy Unrestricted
start PowerShell.exe -NoProfile -ExecutionPolicy Restricted …
Run Code Online (Sandbox Code Playgroud)

powershell troubleshooting hanging sysinternals

5
推荐指数
1
解决办法
2525
查看次数