iT邦幫忙

DAY 21
1

強而有力的 Windows PowerShell系列 第 21

使用 Windows PowerShell 關閉電腦以及重新啟動電腦

由於使用 Windows PowerShell 關閉電腦以及重新啟動電腦的操作是類似的,差別在於一個不需要再送 AC 電源給電腦,另外一個要再重新送 AC 電源,所以一起解說。

強而有力的 Windows PowerShell 系列文章列表如下:
http://ithelp.ithome.com.tw/event/ironmanarticle2/id/20005121
一般來說,電腦關機的工具程式也可以將電腦重新啟動,反之亦然。這是因為,電腦關機和重新啟動在本質上,是屬於同一類型的工作。所以只要了解關閉電腦的工具所提供的參數,就可以用同樣的方式搭配適當的參數來重新啟動電腦。關機跟重新開機的權限要夠,才能順利進行操作。如果是在 Windows Vista 之後的 Windows 上,要記得用**「以系統管理員身分執行」**的方式開啟 Windows PowerShell 並執行命令才行。

如果電腦有安裝終端機伺服器的話,可以使用 TSShutdn.exe 命令列工具,讓具備系統管理員身分的使用者得以關閉電腦(電腦需要支援進階電源管理的軟體控制指令)或重新啟動電腦:

# 關閉電腦
TSShutdn /PowerDown

# 重新啟動電腦
TSShutdn /Reboot

電腦預設都會有 Shutdown.exe 工具,搭配關閉電腦選項的參數 -s,或是重新啟動的參數 -r:

# 關閉電腦
shutdown -s

# 重新啟動電腦
shutdown -r

微軟網站的 PsTools 中的 PsShutdown.exe,也有相對應的參數可用:

#  關閉電腦
C:\PsTools\PsShutdown -k

# 重新啟動電腦
C:\PsTools\PsShutdown -o

請注意

  1. 第一次使用 PsShutdown.exe 會需要同意它的使用規範,所以如果第一次就直接在 Windows PowerShell 裡執行 PsShutdown.exe,會一直停在使用規範的視窗中。此外,第一次需要使用系統管理者的身分來執行,因為它會安裝一個服務。

使用 WMI 所提供的 Win32_OperatingSystem 類別,呼叫 Win32Shutdown 方法,搭配不同的旗標也可關閉電腦(用 1 旗標)或重新啟動電腦(用 2 旗標):

$strComputer = "."

# 關閉電腦
(Get-WmiObject -Class Win32_OperatingSystem -ComputerName $strComputer).Win32Shutdown(1)

# 重新啟動電腦
(Get-WmiObject -Class Win32_OperatingSystem -ComputerName $strComputer).Win32Shutdown(2)

執行上面的指令可能會有像這樣的訊息出現:

呼叫 "Win32Shutdown" 時發生例外狀況: "Privilege not held. "
位於 行:1 字元:75
+ (Get-WmiObject -Class Win32_OperatingSystem -ComputerName .).Win32Shutdown <<<< (1)
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : WMIMethodException

可改用下面的指令:

$strComputer = "."

# 關閉電腦
$OS = Get-WmiObject Win32_OperatingSystem -ComputerName $strComputer
$OS.psbase.Scope.Options.EnablePrivileges = $true
$OS.win32shutdown(1)

# 重新啟動電腦
$OS.win32shutdown(2)

最後一種方式是使用 Windows PowerShell 所提供的 Stop-ComputerRestart-Computer cmdlet:

$strComputer = "."

# 關閉電腦
Stop-Computer -ComputerName $strComputer

# 重新啟動電腦
Restart-Computer -ComputerName $strComputer

上一篇
使用 Windows PowerShell 登出本機電腦
下一篇
使用 Windows PowerShell 查詢網路卡的設定
系列文
強而有力的 Windows PowerShell33

尚未有邦友留言

立即登入留言