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

问题描述 投票:0回答:1

在我们的环境中,我经常需要重新启动计算机,然后通过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?
powershell wmi powershell-remoting
1个回答
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 - 不要改变服务启动,使用代码来处理这个延迟......

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

Restart-Computer -ComputerName "Server01" -Wait -For PowerShell -Timeout 300 -Delay 2
© www.soinside.com 2019 - 2024. All rights reserved.