Restart-Computer
重新啟動本機和遠端電腦上的作業系統。
Syntax
Restart-Computer
[[-ComputerName] <string[]>]
[[-Credential] <pscredential>]
[-DcomAuthentication <AuthenticationLevel>]
[-Impersonation <ImpersonationLevel>]
[-WsmanAuthentication <string>]
[-Protocol <string>]
[-Force]
[-Wait]
[-Timeout <int>]
[-For <WaitForServiceTypes>]
[-Delay <int16>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Restart-Computer
[[-ComputerName] <string[]>]
[[-Credential] <pscredential>]
[-AsJob]
[-DcomAuthentication <AuthenticationLevel>]
[-Impersonation <ImpersonationLevel>]
[-Force]
[-ThrottleLimit <int>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Cmdlet Restart-Computer
會在本機和遠端電腦上重新啟動作業系統。
您可以使用 的參數 Restart-Computer
以背景作業的形式執行重新啟動作業、指定驗證層級和替代認證、限制同時執行的作業,以及強制立即重新啟動。
從 Windows PowerShell 3.0 開始,您可以等候重新啟動完成,再執行下一個命令。 指定等候逾時和查詢間隔,並等候重新啟動的計算機上提供特定服務。 這項功能可讓您在 Restart-Computer
文稿和函式中使用。
您可以使用 WS-Management (WSMan) 通訊協定來重新啟動計算機,以防分散式元件物件模型 (DCOM) 呼叫遭到封鎖,例如由企業防火牆封鎖。 如需詳細資訊,請參閱 WS 管理通訊協定。
只有當您在命令中使用 AsJob 參數時,這個 Cmdlet 才需要 Windows PowerShell 遠端功能。
範例
範例 1:重新啟動本機計算機
Restart-Computer
重新啟動本機計算機。
Restart-Computer
範例 2:重新啟動多部計算機
Restart-Computer
可以重新啟動遠端和本機電腦。 ComputerName 參數接受計算機名稱的陣列。
Restart-Computer -ComputerName Server01, Server02, localhost
範例 3:將電腦重新啟動為背景工作
這些命令會在兩部 Restart-Computer
遠端計算機上以背景工作的形式執行命令,然後取得結果。
由於 AsJob 會在本機電腦上建立作業,並自動將結果傳回至本機電腦,因此您可以以本機命令的形式執行 Receive-Job
。
$Job = Restart-Computer -ComputerName "Server01", "Server02" -AsJob
$Job | Receive-Job
Restart-Computer
會使用 ComputerName 參數來指定 Server01 和 Server02。 AsJob 參數會以背景作業的形式執行命令。 作業物件會儲存在變數中 $Job
。 $Job
會將管線向下傳送至 Receive-Job
取得結果的 Cmdlet。
範例 4:重新啟動遠端電腦
Restart-Computer
重新啟動具有自定義模擬和驗證設定的遠端電腦。
Restart-Computer -ComputerName Server01 -Impersonation Anonymous -DcomAuthentication PacketIntegrity
Restart-Computer
會使用 ComputerName 參數來指定 Server01。 Impersonation 參數會指定 Anonymous 來隱藏要求者的身分識別。 DcomAuthentication 參數會將PacketIntegrity 指定為聯機的驗證層級。
範例 5:強制重新啟動文字檔中列出的計算機
本範例會強制立即重新啟動檔案中列出的 Domain01.txt
計算機。 文字檔中的電腦名稱會儲存在變數中。 Force 參數會強制立即重新啟動,而 ThrottleLimit 參數會限制並行連線的數目。
$Names = Get-Content -Path C:\Domain01.txt
$Creds = Get-Credential
Restart-Computer -ComputerName $Names -Credential $Creds -Force -ThrottleLimit 10
Get-Content
使用 Path 參數從文字檔案取得電腦名稱的清單, Domain01.txt。 計算機名稱會儲存在變數 $Names
中。 Get-Credential
會提示您輸入使用者名稱和密碼,並將值儲存在變數 $Creds
中。 Restart-Computer
使用 ComputerName 和 Credential 參數搭配其變數。 Force 參數會導致每部計算機立即重新啟動。 ThrottleLimit 參數會將命令限制為10個並行連線。
範例 6:重新啟動遠端電腦並等候 PowerShell
Restart-Computer
會重新啟動遠端計算機,然後等候最多 5 分鐘 (300 秒) ,讓 PowerShell 在重新啟動後再繼續運作。
Restart-Computer -ComputerName Server01 -Wait -For PowerShell -Timeout 300 -Delay 2
Restart-Computer
會使用 ComputerName 參數來指定 Server01。 Wait 參數會等候重新啟動完成。 For 指定 PowerShell 可以在遠端電腦上執行命令。 Timeout 參數會指定五分鐘的等候。 Delay 參數每隔兩秒會查詢遠端計算機,以判斷是否重新啟動。
範例 7:使用 WSMan 通訊協定重新啟動電腦
Restart-Computer
使用 WSMan 通訊協定來重新啟動遠端電腦,而不是預設的 DCOM。 Kerberos 驗證會判斷目前使用者是否有權重新啟動遠端電腦。
這些設定是針對 DCOM 型重新啟動失敗的企業所設計,因為 DCOM 遭到封鎖。 例如,由防火牆。
Restart-Computer -ComputerName Server01 -Protocol WSMan -WsmanAuthentication Kerberos
Restart-Computer
會使用 ComputerName 參數來指定遠端電腦 Server01。
Protocol 參數會指定使用 WSMan 通訊協定。 WsmanAuthentication 參數會將驗證方法指定為 Kerberos。
參數
-AsJob
表示以 Restart-Computer
背景作業的形式執行。
若要使用此參數,必須設定本機和遠端電腦以進行遠端處理。 在 Windows Vista 和更新版本的 Windows 作業系統上,您必須使用 [ 以系統管理員身分執行 ] 選項開啟 PowerShell。 如需詳細資訊,請參閱about_Remote_Requirements。
當您指定 AsJob 參數時,命令會立即傳回代表背景作業的物件。 工作完成後,您可以繼續在工作階段中工作。 工作會在本機電腦上建立,而來自遠端電腦的結果則會自動傳回到本機電腦。 若要管理工作,請使用 Job Cmdlet。 若要取得作業結果,請使用 Receive-Job
Cmdlet。
如需背景工作 Windows PowerShell 的詳細資訊,請參閱about_Jobs和about_Remote_Jobs。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ComputerName
指定一部計算機名稱或以逗號分隔的計算機名稱陣列。 Restart-Computer
接受來自管線或變數的 ComputerName 物件。
輸入遠端電腦的 NetBIOS 名稱、IP 位址或完整網域名稱。 若要指定本機計算機,請輸入計算機名稱、點 .
或localhost。
此參數不依賴 PowerShell 遠端處理。 即使您的電腦未設定為執行遠端命令,您也可以使用 ComputerName 參數。
如果未指定 ComputerName 參數, Restart-Computer
請重新啟動本機電腦。
Type: | String[] |
Aliases: | CN, __SERVER, Server, IPAddress |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Confirm
在執行 之前 Restart-Computer
提示您進行確認。
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
指定有權執行此動作的用戶帳戶。 輸入用戶名稱,例如User01、Domain01\User01,或輸入 Cmdlet 產生的 Get-Credential
PSCredential 物件。
如果未指定 Credential 參數, Restart-Computer
請使用目前用戶的認證。
Type: | PSCredential |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DcomAuthentication
指定用於 WMI 連線的驗證層級。 Restart-Computer
使用 WMI。
有效值為:
- 呼叫:呼叫層級 COM 驗證
- 線上:連線層級 COM 驗證
- 預設值:Windows 驗證
- 無:無 COM 驗證
- 封包:封包層級 COM 驗證。
- PacketIntegrity:封包完整性層級 COM 驗證
- PacketPrivacy:封包隱私權層級 COM 驗證。
- 未變更:驗證層級與上一個命令相同。
如需詳細資訊,請參閱 AuthenticationLevel 列舉。
此參數是在 Windows PowerShell 3.0 引進。
Type: | AuthenticationLevel |
Aliases: | Authentication |
Accepted values: | Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Delay
指定查詢的頻率,以秒為單位。 PowerShell 會查詢 For 參數所指定的服務,以判斷電腦重新啟動之後是否可以使用服務。
此參數只與 Wait 和 For 參數一起有效。
此參數是在 Windows PowerShell 3.0 引進。
如果未指定 Delay 參數, Restart-Computer
請使用五秒的延遲。
Type: | Int16 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-For
指定 PowerShell 的行為,因為它會等候指定的服務或功能在電腦重新啟動之後變成可用。 此參數只適用於 Wait 參數。
此參數可接受的值為:
- 默認值:等候 PowerShell 重新啟動。
- PowerShell:可以在電腦上的PowerShell遠端會話中執行命令。
- WMI:接收對電腦 Win32_ComputerSystem 查詢的回覆。
- WinRM:可以使用 WS-Management 來建立連到電腦的遠端工作階段。
此參數是在 Windows PowerShell 3.0 引進。
Type: | WaitForServiceTypes |
Accepted values: | Wmi, WinRM, PowerShell |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
強制立即重新啟動電腦。
Type: | SwitchParameter |
Aliases: | f |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Impersonation
指定此 Cmdlet 用來呼叫 WMI 的模擬層級。 Restart-Computer
使用 WMI。
此參數可接受的值為:
- 默認值:預設模擬。 儘管有名稱,但這不是預設值。
- 匿名:隱藏呼叫端的身分識別。
- 識別:允許對象查詢呼叫端的認證。
- 模擬:允許物件使用呼叫端的認證。
Type: | ImpersonationLevel |
Accepted values: | Default, Anonymous, Identify, Impersonate, Delegate |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Protocol
指定要用來重新啟動電腦的通訊協定。 有效值為 WSMan 和 DCOM。
此參數是在 Windows PowerShell 3.0 引進。
Type: | String |
Accepted values: | DCOM, WSMan |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ThrottleLimit
指定為執行此命令可建立的最大同時連線數。 節流限制僅適用於目前命令,不適用於工作階段或電腦。
如果未指定 ThrottleLimit 參數,或使用值為 0, Restart-Computer
則最多使用 32 個並行連線。
Type: | Int |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Timeout
指定等待的持續時間 (單位為秒)。 當逾時經過時, Restart-Computer
即使計算機未重新啟動,仍會返回命令提示字元。
Timeout 參數只適用於 Wait 參數。 逾 時會覆寫 Wait 參數的無限期等候期間。
此參數是在 Windows PowerShell 3.0 引進。
Type: | Int |
Aliases: | TimeoutSec |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Wait
Restart-Computer
隱藏 PowerShell 提示字元並封鎖管線,直到電腦重新啟動為止。 您可以在文稿中使用此參數來重新啟動計算機,然後在重新啟動完成時繼續處理。
Wait 參數會無限期等候電腦重新啟動。 您可以使用 Timeout 來調整計時和 For 和 Delay 參數,以等候重新啟動的電腦上提供特定服務。
當您重新啟動本機計算機時, Wait 參數無效。 如果 ComputerName 參數的值包含遠端電腦和本機電腦的名稱,Restart-Computer
則會產生非終止錯誤以等候本機電腦,但等候遠端電腦重新啟動。
此參數是在 Windows PowerShell 3.0 引進。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
顯示執行時 Restart-Computer
會發生什麼情況。 Cmdlet Restart-Computer
未執行。
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WsmanAuthentication
指定用來驗證使用者認證的機制。 此參數是在 Windows PowerShell 3.0 引進。
此參數可接受的值為: Basic、 CredSSP、 Default、 Digest、 Kerberos 和 Negotiate。
如需詳細資訊,請參閱 AuthenticationMechanism。
警告
認證安全性服務提供者 (CredSSP) 驗證,其中會將使用者認證傳遞至要驗證的遠端電腦,是針對需要對多個資源進行驗證的命令所設計,例如存取遠端網路共用。 此機制會使得遠端作業的安全性風險變高。 若遠端電腦遭到入侵,傳遞給它的認證便可用來控制網路工作階段。
Type: | String |
Accepted values: | Basic, CredSSP, Default, Digest, Kerberos, Negotiate |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
輸入
Restart-Computer
接受來自管線或變數的計算機名稱。
在 Windows PowerShell 2.0 中,ComputerName 參數只接受從管線輸入屬性名稱。 在 Windows PowerShell 3.0 和更新版本中,ComputerName 參數會依值從管線取得輸入。
輸出
None, System.Management.Automation.RemotingJob
如果您指定 AsJob 參數,則會 Restart-Computer
傳回作業物件。 否則,就不會產生任何輸出。
備註
Restart-Computer
只能在執行 Windows 的電腦上運作,而且需要 WinRM 和 WMI 才能關閉系統,包括本機系統。Restart-Computer
使用 Windows Management Instrumentation (WMI) Win32_OperatingSystem 類別的 Win32Shutdown 方法。
在 Windows PowerShell 2.0 中,當您重新啟動或停止遠端計算機時,AsJob 參數無法可靠地運作。 在 Windows PowerShell 3.0 中,已變更實作來解決這個問題。