如何在 PowerShell 中的 Restart-Computer cmdlet 中使用 –Wait 参数?
当我们对远程计算机名称使用 **Restart-Computer** 命令时,PowerShell 会重启指定的远程计算机,而不会检查或验证服务器是否已启动。 **-Wait** 参数满足了这一需求。每当指定 **-Wait** 参数时,PowerShell 在计算机重启时会对远程计算机执行以下 3 项检查。这可以在 PowerShell 控制台的进度条中看到。
- **PowerShell** - 检查计算机是否可以在远程机器上运行 PowerShell 命令。
- **WMI** - 使用 Win32_ComputerSystem 命令对远程计算机执行 WMI 查询。
- **WINRM** - 使用 WS-Management 实用程序检查远程服务器 WINRM 连接。
当您通过指定 **-Wait** 命令使用 **Restart-Computer** cmdlet 重启两台或多台计算机时,PowerShell 会同时向所有计算机发出重启命令,但 **-Wait** 命令的检查会在所有计算机上分别进行。
写在 **Reboot-Computer** 之后且与 **-Wait** 参数一起指定的命令将在 **-Wait** 参数检查完成后按顺序执行。但是,如果任何检查失败会怎样?
例如,假设服务器 **Test1-Win2k12** 上未运行 **WINRM** 服务,则服务器将重新启动并启动,但等待命令会等待更长时间,有时甚至永远等待,直到远程计算机上的 WINRM 启动。如果服务状态为自动,则该服务将自动启动,但如果已禁用且为手动,则检查将保持较长时间,直到手动终止。
如果您想使用 **–Wait** 参数并希望进行特定检查,则可以将其与 **–For** 参数一起使用,如果希望在时间限制内完成验证,则指定 **–Timeout** 参数。
广告