Windows操作系統作為優秀的操作系統,由開發操作系統的微軟公司控制接口和設計,公開標準,因此,有大量商業公司在該操作系統上開發商業軟件。 最近筆者就遇到一個要批量重啟 2300 多臺 Windows Server 的艱巨任務,這批服務器全為 DELL 刀片,要求 5 天內完成全部重啟,是根本不可能去一臺臺手動重啟的。 ![]() 對熟悉 PowerShell 的管理員來說,肯定首先想到 Restart-Computer cmdlet。Restart-Computer 是許多 IT Pro 用來重啟本地和遠程計算機的常見命令,畢竟可以在 ComputerName 參數中指定盡可能多的計算機(名)來批量重新啟動 Windows 計算機。 問題就這么解決了?似乎沒這么簡單。 其中一個潛在的問題就是 Restart-Computer 不能自動工作,遠程計算機本身必須滿足某些先決條件才能實現重啟。例如:遠程計算機必需使用 DCOM 或 WSMAN 進行身份驗證。 默認情況下,Restart-Computer 使用 DCOM。所有要重啟的遠程計算機要先確認是否啟用了 DCOM 或 PowerShell Remoting,這樣 Restart-Computer 才可以以 WsManAuthentication 和 DcomAuthentication 參數的形式提供一些選項。通過使用這些參數,可以指定連接到每臺遠程計算機的方式。 Restart-Computer -ComputerName SRV1 -WsmanAuthentication {Default | Basic | Negotiate | CredSSP | Digest | Kerberos}Restart-Computer -ComputerName SRV1 -DcomAuthentication {Default | None | Connect | Call | Packet | PacketIntegrity | PacketPrivacy | Unchanged } 如果確定好了連接方式,那么 Restart-Computer -ComputerName 后跟定的計算機名將按順序重啟。例如:computer 1、computer 2、computer 3 等等。 當然,2300 臺服務器是不可能一次性就重啟的。如果我們計劃好每次重啟 100 臺,分 24 次就可以將 2300 余臺服務器全部重啟。而且就算每次只重啟 100 臺 Windows Server,也是需要一段時間的。由于 Restart-Computer 的每次重啟任務都是獨立的,而每臺服務器重啟都需要時間,管理員是否需要等待每一個重啟任務完成呢?當然不是!Restart-Computer 有一個 AsJob 參數,可以使用 AsJob 參數來創建一個后臺作業,讓批量重啟任務在后臺下發,而不必停下等待每臺服務器重啟完成。(使用后臺任務,比一次又一次執行重啟任務要快得多。) Restart-Computer -ComputerName SRV1,SRV2,SRV3,SRV4 -AsJob 重啟命令批量分發下去之后還沒完,我們還需要確定重啟的 Windows Server 是否被正常喚醒。為了確認遠程主機是否已經正常啟動,我們還可以使用 Wait 參數和 For 參數。Wait 和 For 參數非常適合在腳本中使用,可以在遠程計算機恢復后執行其他任務。 Restart-Computer -ComputerName SRV1 -For {Wmi | WinRM | PowerShell} Restart-Computer cmdlet 在許多不同的場景中非常有用,通過它提供的參數不僅可批量遠程重啟 Windows 計算機,還可以執行重啟后的規定任務。 Windows操作系統對硬件支持良好。 |
溫馨提示:喜歡本站的話,請收藏一下本站!