重启后启用 PSRemoting 的最快方法?使用 WMI 方法的长时间延迟

Quickest way to enable PSRemoting after a reboot? Long delay with WMI Method

在我们的环境中,我经常需要重新启动计算机,然后通过 Invoke-Command 向它发送命令。为此,我显然需要在目标机器上启用 PSRemoting。

它在我们所有的机器上默认启用,但是在重新启动后它需要一段时间才能自行启动。

我正在使用 Invoke-WmiMethod 在计算机发出 ping 命令时强制启用它,而不是等待。

效果很好,但有时需要 30-40 秒才能启动。如果我让它自己启动,它仍然比 2-5 分钟要快。

我使用的命令是:

Invoke-WmiMethod -ComputerName $poste -Path Win32_Process -Name create -ArgumentList "powershell.exe -command Enable-PSRemoting -SkipNetworkProfileCheck -Force"

我的问题是:

  1. 为什么在该命令运行后需要这么长时间才能真正启用?
  2. 您是否有更好的方法建议通过 WMI 或其他方式启用 PSRemoting?

tldr;

当 运行 Enable-PSRemoting 启动 WinRM 服务时,您真正在做的所有事情,该命令所做的一切都会被跳过,因为您已经配置了它。

WinRM 服务设置为 Automatic Delayed Start - 为了使其启动更快,请将其更改为 Automatic


您指的 'delay' 是 Windows 启动 WinRM 服务的延迟。

启动时启动的服务有两个选项:

  • Automatic 将在 Windows 本身加载后尽快启动服务
  • Automatic Delayed Start 将在短暂延迟后启动服务

这两种类型的原因是资源争用 - 让每个服务同时启动将使用大量资源,最终用户会注意到这是一种减速。

有效管理资源 Windows 所必需的服务将设置为 Automatic 并同时启动。这会消耗大量系统资源,但用户别无选择,因为 Windows 通常需要这些服务才能正常工作。

但对于非必需的服务,Delayed Start 是更好的选择。当所有 Automatic 服务都已启动时,它们会启动 "shortly after boot"。这些通常是次要功能的服务 - 例如更新程序服务。

WinRM 服务设置为 Automatic Delayed Start - 为了使其启动更快,请将其更改为 Automatic。你会因此而受到性能影响,所以在进行大量更改之前测试它。


IMO - 不要更改服务启动,使用代码来处理此延迟...

例如,带有 Wait 参数的 Restart-Computer 将重启远程计算机并在继续之前等待连接:

Restart-Computer -ComputerName "Server01" -Wait -For PowerShell -Timeout 300 -Delay 2