退出脚本(关机,重启等)本地和远程

时间:2015-05-19 19:55:07

标签: powershell restart powershell-remoting

我一直在尝试两种不同的方法来完成脚本。我需要提供不同的方法来完成脚本,具体取决于用户需求,如注销,重启和关机。我尝试了两种方法,一种是基于Shutdown.exe的方法,另一种是Get-WmiObject方法。像这样......

Shutdown.exe -r -t 0

(Get-WmiObject win32_operatingsystem -nameSpace:'root\CIMV2' -computerName:'.').Win32Shutdown(2) > $null

问题在于,在不同情况下,每个都有效或无效。前一种方法适用于我的Windows Home机器,而后一种方法失败,并且没有'#34;特权未被保留"错误。另一方面,在上周的一系列Windows 7机器上,前者没有做任何事情,后者工作正常。我希望有人可以验证这是否确实是Home vs Pro的事情,或者是否还有其他东西在玩? 为了增加问题的复杂性,我还需要能够将脚本作为远程作业运行,理想情况下不需要替代方法。 这里有一些全球解决方案吗?或者我是否需要使用丑陋的kludge路线同时使用两者,相信其中一个可以在任何条件下工作?

编辑:根据Tony的评论,我现在正在转换中使用此变体。

try {
   (Get-WmiObject win32_operatingsystem -nameSpace:'root\CIMV2' -computerName:'.').Win32Shutdown(1) > $null
} catch {
   Shutdown.exe /s /t 0
}

1 个答案:

答案 0 :(得分:1)

对于关闭或重新启动计算机的脚本命令,我强烈建议您使用多种方法,除非您拥有严格控制的异构环境,在这种情况下您可以彻底测试一种方法,以确保您可以放心使用它会很可靠。

虽然可能会考虑发出两个或三个不同的关机命令"凌乱," IT有时会很乱,不是吗?我知道做这样的事情可以让你感觉很脏,但请放心,你会在几周内忘记它,它将不再作为一个巨大的食人魔出现在你的噩梦中,这是一个不必要的命令你的电脑。 :)

这仅仅是根据我的经验,所以没有文献可以引用。如果有一些评论有相反的令人信服的论据,或者更好的答案,我很乐意删除这个答案。