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

时间:2019-02-21 13:20:09

标签: powershell wmi powershell-remoting

在我们的环境中,我经常需要重新启动计算机,然后通过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?

1 个答案:

答案 0 :(得分:2)

tldr;

在运行Enable-PSRemoting时启动WinRM服务时,您实际上所做的所有事情,该命令所做的所有其他操作都会被跳过,因为您已经对其进行了配置。

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


您所指的“延迟”是Windows启动WinRM服务的延迟。

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

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

这两种类型的原因是资源争用-每个服务同时启动将占用大量资源,最终用户会注意到这是一种缓慢的情况。

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

但是对于并非必不可少的服务,Delayed Start是更好的选择。当所有Automatic服务都已启动时,它们将在“启动后不久”开始。这些通常是用于辅助功能的服务-例如更新程序服务。

WinRM服务设置为Automatic Delayed Start-为了使其启动更快,请将其更改为Automatic。您会为此受到打击,因此请在进行大规模更改之前进行测试。


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

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

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