【问题标题】:Shutdown/restart command using a variable in powershell使用powershell中的变量关闭/重启命令
【发布时间】:2015-02-23 15:32:22
【问题描述】:

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

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

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

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

  • 原因 = $comment
  • time = $time(该值以及是否需要复选框)
  • 服务器名称 = $server

我会用几个“if”的时间选项来测试,是否检查过,重启原因不为空,然后将它们全部添加到一个变量中:

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

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

& shutdown $reboot

我的问题是这行得通吗?有人这样用过吗?还是有更好的方法来做到这一点? 我有几天不能测试它,因为我现在网络上没有任何服务器可以重启感觉。

【问题讨论】:

  • 我认为你所拥有的应该可以工作,但你也可以使用 Stop-Computer cmdlet,出于同样的原因。尽管您似乎无法获得 cmets
  • 谢谢你的想法。我查看了那个重新启动计算机命令,它看起来很“变量友好”,但找不到“评论”选项(它是我必须拥有的字段)这是我发现的语法:停止计算机 [ [-ComputerName] string[]] [[-Credential] PSCredential] [-Authentication AuthenticationLevel] [-Impersonation ImpersonationLevel] [-AsJob] [-Force] [-ThrottleLimit int] [-Confirm] [-WhatIf] [CommonParameters]

标签: powershell cmd shutdown reboot


【解决方案1】:

它应该工作,是的。我还建议使用数组作为参数以保持干净。

$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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-05
    • 2021-05-06
    • 2022-01-23
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多