在 linux 中我們可以使用 SSH 執行各種遠程操作,同樣的在 windows 平臺上我們可以通過 PowerShell 獲得類似的能力。本文將介紹通過 PowerShell 執行遠程操作的基本信息。想了解 SSH 遠程操作的同學,可以參考《SSH 遠程執行任務》。
基礎
MS 定義了一個叫做 WS-Management 的協議,這個協議為計算機設備遠程交換管理數據提供了一個公開的標準。在 Windows 平臺上,MS 通過 Windows 遠程管理服務(Windows Remote Management service,簡稱 WinRM) 實現了 WS-Management 協議。這就是我們可以通過 PowerShell 執行遠程操作的基礎,因為 PowerShell 就是通過 WinRM 服務來進行遠程操作的。
檢查 WinRM 服務
我們可以通過下面的命令查看 WinRM 服務的狀態:
Get-Service WinRM
服務器版的 Windows 系統默認是啟動 WinRM 服務的,而普通版的系統默認則沒有啟動該服務。接下來我們將介紹如何以正確的姿勢啟動這個服務。
配置系統接受遠程命令
類似于 SSH 的客戶端/服務器架構,只需要在接受遠程命令的主機上配置 WinRM 服務就可以了。其實就是讓 WinRM 服務監聽一個端口,跟 SSH daemon 是一樣的!
用管理員權限啟動 PowerShell,執行下面的命令:
Enable-PSRemoting –Force
然后再檢查 WinRM 服務就應該是運行狀態:
或者:
防火墻規則也發生了變化:
Enable-PSRemoting 命令不僅啟動了 WinRM 服務,還幫我們設置好了防火墻規則。
如果你的計算機已經加入了域,那么上面的配置就可以了。對于沒有加入域的計算機還需要進行信任設置,然后重啟 WinRM 服務:
Set-Item wsman:/localhost/client/trustedhosts *Restart-Service WinRM
測試遠程連接
PowerShell 還提供了一個命令用來測試遠程主機是否開啟了遠程操作服務:
Test-WsMan xxx.xxx.xxx.xxx
上面圖中的命令成功返回了,說明遠程主機上已經配置好了允許遠程訪問的服務。如果返回錯誤的消息,則說明遠程主機沒有打開遠程訪問的服務。
創建遠程連接 Session
這種方式類似于 SSH 的遠程連接。使用 SSH 客戶端建立一個到服務器的連接(session),然后執行各種操作。這是 SSH 最基本的使用方式,PowerShell 也提供了類似的支持讓我們可以做同樣的事情。
新聞熱點
疑難解答