【问题标题】:Quickest way to enable PSRemoting after a reboot? Long delay with WMI Method重启后启用 PSRemoting 的最快方法是什么? WMI 方法的长时间延迟
【发布时间】:2019-07-15 10:16:14
【问题描述】:

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

    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
    

    【讨论】:

    • 感谢重新启动计算机代码,即使在自动启动模式下使用 WinRM,我也看到连接失败。
    猜你喜欢
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多