共用方式為


Restart-Computer

重新啟動本機和遠端電腦上的作系統。

語法

Restart-Computer
       [-DcomAuthentication <AuthenticationLevel>]
       [-Impersonation <ImpersonationLevel>]
       [-WsmanAuthentication <String>]
       [-Protocol <String>]
       [[-ComputerName] <String[]>]
       [[-Credential] <PSCredential>]
       [-Force]
       [-Wait]
       [-Timeout <Int32>]
       [-For <WaitForServiceTypes>]
       [-Delay <Int16>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Restart-Computer
       [-AsJob]
       [-DcomAuthentication <AuthenticationLevel>]
       [-Impersonation <ImpersonationLevel>]
       [[-ComputerName] <String[]>]
       [[-Credential] <PSCredential>]
       [-Force]
       [-ThrottleLimit <Int32>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

Description

Restart-Computer Cmdlet 會在本機和遠端電腦上重新啟動作系統。

您可以使用 Restart-Computer 的參數,以背景作業的形式執行重新啟動作業、指定驗證層級和替代認證、限制同時執行的作業,以及強制立即重新啟動。

從 Windows PowerShell 3.0 開始,您可以等候重新啟動完成,再執行下一個命令。 指定等候逾時和查詢間隔,並等候重新啟動的計算機上提供特定服務。 這項功能可讓您在腳本和函式中使用 Restart-Computer

您可以使用 WS-Management (WSMan) 通訊協定重新啟動計算機,以防分散式元件物件模型 (DCOM) 呼叫遭到封鎖,例如企業防火牆。 如需詳細資訊,請參閱 WS-Management 通訊協定

只有在命令中使用 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 參數來指定 Server01Server02AsJob 參數會以背景工作的形式執行命令。 作業物件會儲存在 $Job 變數中。 $Job 會從管線向下傳送至取得結果的 Receive-Job Cmdlet。

範例 4:重新啟動遠端電腦

Restart-Computer 使用自定義模擬和驗證設定重新啟動遠端電腦。

Restart-Computer -ComputerName Server01 -Impersonation Anonymous -DcomAuthentication PacketIntegrity

Restart-Computer 會使用 ComputerName 參數來指定 Server01模擬 參數會指定 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。 電腦名稱會儲存在變數中,$NamesGet-Credential 提示您輸入使用者名稱和密碼,並將值儲存在變數 $Creds中。 Restart-Computer 會使用 ComputerNameCredential 參數及其變數。 Force 參數會導致每部電腦立即重新啟動。 ThrottleLimit 參數會將命令限制為 10 個並行連線。

範例 6:重新啟動遠端電腦並等候 PowerShell

Restart-Computer 會重新啟動遠端計算機,然後等候最多 5 分鐘(300 秒)讓 PowerShell 在重新啟動的電腦上可供使用,再繼續進行。

Restart-Computer -ComputerName Server01 -Wait -For PowerShell -Timeout 300 -Delay 2

Restart-Computer 會使用 ComputerName 參數來指定 Server01Wait 參數會等候重新啟動完成。 For 指定 PowerShell 可以在遠端電腦上執行命令。 Timeout 參數會指定五分鐘的等候。 Delay 參數會每隔兩秒查詢遠端電腦,以判斷它是否已重新啟動。

範例 7:使用 WSMan 通訊協定重新啟動電腦

Restart-Computer 使用 WSMan 通訊協定來重新啟動遠端電腦,而不是預設的 DCOM。 Kerberos 驗證會判斷目前使用者是否有權重新啟動遠端電腦。

這些設定是針對 DCOM 型重新啟動失敗的企業所設計,因為 DCOM 遭到封鎖。 例如,由防火牆。

Restart-Computer -ComputerName Server01 -Protocol WSMan -WsmanAuthentication Kerberos

Restart-Computer 會使用 ComputerName 參數來指定遠端電腦,Server01Protocol 參數會指定使用 WSMan 通訊協定。 WsmanAuthentication 參數會將驗證方法指定為 Kerberos

參數

-AsJob

表示 Restart-Computer 以背景工作的形式執行。

若要使用此參數,必須設定本機和遠端計算機進行遠端處理。 在 Windows Vista 和更新版本的 Windows作系統上,您必須使用 [以系統管理員身分執行] 選項 開啟 PowerShell。 如需詳細資訊,請參閱 about_Remote_Requirements

當您指定 AsJob 參數時,命令會立即傳回代表背景工作的物件。 您可以在作業完成時繼續在工作階段中工作。 作業會在本機計算機上建立,而遠端計算機的結果會自動傳回至本機計算機。 若要管理作業,請使用 Job Cmdlet。 若要取得作業結果,請使用 Receive-Job Cmdlet。

如需 Windows PowerShell 背景工作的詳細資訊,請參閱 about_Jobsabout_Remote_Jobs

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-ComputerName

指定一個電腦名稱或以逗號分隔的計算機名稱陣列。 Restart-Computer 接受來自管線或變數 ComputerName 物件。

輸入 NetBIOS 名稱、IP 位址或遠端電腦的完整功能變數名稱。 若要指定本機計算機,請輸入計算機名稱、點 .或localhost。

此參數不依賴 PowerShell 遠端處理。 即使您的電腦未設定為執行遠端命令,您也可以使用 ComputerName 參數。

如果未指定 ComputerName 參數,Restart-Computer 會重新啟動本機計算機。

類型:String[]
別名:CN, __SERVER, Server, IPAddress
Position:0
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

-Confirm

在執行 Restart-Computer之前,提示您進行確認。

類型:SwitchParameter
別名:cf
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-Credential

指定具有執行此動作許可權的用戶帳戶。 預設值為目前的使用者。

輸入使用者名稱,例如 User01Domain01\User01,或輸入 Get-Credential Cmdlet 所產生的 PSCredential 物件。 如果您輸入使用者名稱,系統會提示您輸入密碼。

認證會儲存在 PSCredential 物件中,密碼會儲存為 secureString

注意

如需 SecureString 數據保護的詳細資訊,請參閱 SecureString 有多安全?

類型:PSCredential
Position:1
預設值:Current user
必要:False
接受管線輸入:False
接受萬用字元:False

-DcomAuthentication

指定用於 WMI 連線的驗證層級。 Restart-Computer 使用 WMI。

有效值為:

  • 通話:通話層級 COM 驗證
  • Connect:Connect 層級 COM 驗證
  • 預設:Windows 驗證
  • :無 COM 驗證
  • 封包:封包層級 COM 驗證。
  • PacketIntegrity:封包完整性層級 COM 驗證
  • PacketPrivacy:封包隱私權層級 COM 驗證。
  • 未變更:驗證層級與上一個命令相同。

如需詳細資訊,請參閱 AuthenticationLevel 列舉

此參數是在 Windows PowerShell 3.0 中引進的。

類型:AuthenticationLevel
別名:Authentication
接受的值:Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Delay

指定查詢的頻率,以秒為單位。 PowerShell 會查詢 For 參數所指定的服務,以判斷計算機重新啟動後是否可以使用服務。

此參數只與 WaitFor 參數一起有效。

此參數是在 Windows PowerShell 3.0 中引進的。

如果未指定 Delay 參數,Restart-Computer 會使用五秒的延遲。

類型:Int16
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-For

指定 PowerShell 的行為,因為它會等候指定的服務或功能在電腦重新啟動後變成可用。 此參數只適用於 Wait 參數。

此參數可接受的值為:

  • 預設:等候 PowerShell 重新啟動。
  • PowerShell:可以在電腦上的 PowerShell 遠端會話中執行命令。
  • WMI:接收計算機的Win32_ComputerSystem查詢回復。
  • WinRM:可以使用 WS-Management 建立對計算機的遠端會話。

此參數是在 Windows PowerShell 3.0 中引進的。

類型:WaitForServiceTypes
接受的值:Wmi, WinRM, PowerShell
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Force

強制立即重新啟動電腦。

類型:SwitchParameter
別名:f
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Impersonation

指定此 Cmdlet 用來呼叫 WMI 的模擬層級。 Restart-Computer 使用 WMI。 此參數可接受的值為:

  • 預設:預設模擬。 儘管名稱如此,但這不是預設值。
  • 匿名:隱藏呼叫者的身分識別。
  • 識別:允許對象查詢呼叫端的認證。
  • 模擬:允許物件使用呼叫者的認證。
類型:ImpersonationLevel
接受的值:Default, Anonymous, Identify, Impersonate, Delegate
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Protocol

指定要用來重新啟動電腦的通訊協定。 有效值為 WSManDCOM

此參數是在 Windows PowerShell 3.0 中引進的。

類型:String
接受的值:DCOM, WSMan
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-ThrottleLimit

指定可以建立以執行此命令的並行連線數目上限。 節流限制僅適用於目前的命令,不適用於會話或計算機。

如果未指定 ThrottleLimit 參數或使用 0 值,Restart-Computer 最多使用 32 個並行連線。

類型:Int32
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Timeout

指定等候的持續時間,以秒為單位。 當逾時經過時,即使計算機未重新啟動,Restart-Computer 仍會返回命令提示字元。

Timeout 參數只適用於 Wait 參數。 逾時 會覆寫 Wait 參數的無限期等候期間。

此參數是在 Windows PowerShell 3.0 中引進的。

類型:Int32
別名:TimeoutSec
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Wait

Restart-Computer 隱藏 PowerShell 提示字元,並封鎖管線,直到電腦重新啟動為止。 您可以在文稿中使用此參數來重新啟動計算機,然後在重新啟動完成時繼續處理。

Wait 參數會無限期等候電腦重新啟動。 您可以使用 逾時 來調整計時和 ForDelay 參數,以等候重新啟動的計算機上取得特定服務。

當您重新啟動本機計算機時,Wait 參數無效。 如果 ComputerName 參數的值包含遠端電腦和本機電腦的名稱,Restart-Computer針對本機電腦上的等候 產生非終止錯誤,但會等候遠端電腦重新啟動。

此參數是在 Windows PowerShell 3.0 中引進的。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-WhatIf

顯示 Restart-Computer 執行時會發生什麼事。 Restart-Computer Cmdlet 未執行。

類型:SwitchParameter
別名:wi
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-WsmanAuthentication

指定用來驗證使用者認證的機制。 此參數是在 Windows PowerShell 3.0 中引進的。

此參數可接受的值為:BasicCredSSPDefaultDigestKerberosNegotiate

如需詳細資訊,請參閱 AuthenticationMechanism

警告

認證安全性服務提供者 (CredSSP) 驗證,其中使用者認證會傳遞至要驗證的遠端電腦,是針對需要驗證多個資源的命令所設計,例如存取遠端網路共用。 此機制會增加遠端作業的安全性風險。 如果遠端電腦遭到入侵,傳遞給它的認證可用來控制網路會話。

類型:String
接受的值:Basic, CredSSP, Default, Digest, Kerberos, Negotiate
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

String

您可以使用管線將包含電腦名稱的字串傳送至此 Cmdlet。

輸出

None

根據預設,此 Cmdlet 不會傳回任何輸出。

System.Management.Automation.RemotingJob

當您使用 AsJob 參數時,這個 Cmdlet 會傳回作業物件。

備註

  • Restart-Computer 只能在執行 Windows 的電腦上運作,而且需要 WinRM 和 WMI 關閉系統,包括本機系統。
  • Restart-Computer 會使用 Windows Management Instrumentation (WMI) Win32_OperatingSystem 類別的 Win32Shutdown 方法。 此方法需要為用來重新啟動計算機的用戶帳戶啟用 SeShutdownPrivilege 許可權。

在 Windows PowerShell 2.0 中,當您重新啟動或停止遠端電腦時,AsJob 參數無法可靠地運作。 在 Windows PowerShell 3.0 中,實作已變更,以解決此問題。