Shutdown/restart 在 powershell 中使用变量的命令

Shutdown/restart command using a variable in powershell

我正在使用我的工具开发 GUI 重启模块。 为此,我想使用命令提示符 "shutdown" 命令行。 它的目的是替换多个服务器上的 "shutdown -i" 然后我可以自动 ping 它们以检查重启是否成功。

在 CMD 中,命令行如下所示:

shutdown /r /t 30 /m \server /c "reboot reason"

在我的脚本中,我将要求:

我会测试几个"if"s时间选项,是否选中,重启原因不为空,然后将它们全部添加到一个变量中:

$reboot = "/r /t " + $time + "/m \" + $server + "/c " + $comment

然后在powershell命令中使用变量:

& shutdown $reboot

我的问题是这行得通吗?有人这样用过吗?或者有更好的方法吗? 我几天没法测试它,因为我现在网络上没有任何可以重新启动的服务器。

应该可以,是的。我还建议使用数组作为参数以保持其清洁。

$time = 120
$server = "mycomputer"
$comment = "this is my comment."
$reboot = @("/r", "/t", $time, "/m", "\$server", "/c", $comment)

& shutdown $reboot

或者您可以尝试使用 WMI(未测试):

$time = 120
$comment = "this is my comment."
$server = "mycomputer"

Invoke-WmiMethod -ComputerName $server -Class Win32_OperatingSystem -Name Win32ShutdownTracker -ArgumentList @($time, $comment, 0, 2)