PowerShell遠程操作是遠程管理的基礎,它為集中管理分布式系統提供了又一種可靠、高效的方法。
一般來說PowerShell遠程操作依賴于遠程處理基礎結構,但為數不多的幾個自身具有遠程處理能力的命令除外,如Get-Service、Get-Process、Get-WMIObject、Get-EventLog和Get-WinEvent等。(不難看出,這些命令都是“讀取”系統的某些方面的信息,不做更改。它們依賴.Net Framework完成遠程操作。)
配置遠程基礎結構
遠程基礎結構是遠程操作的基礎,正確設置遠程基礎結構才能使遠程命令正確執行。好在遠程基礎結構雖然重要,但是配置起來非常簡單。實際上,只要設置好以下兩點就可以進行遠程操作了:
1、以管理員身份運行。要進行遠程操作,必須以管理員身份啟動PowerShell命令行,即使當前用戶是系統管理員也要如此。
2、啟用遠程處理模式。啟用遠程處理模式之后,依賴遠程基礎結構的命令才能正確執行。啟用遠程處理模式請使用enable-psremoting命令。有的系統默認已經開啟了遠程處理模式,檢查遠程處理模式是否啟動,可以執行new-pssession命令。如果新的會話成功創建,則說明遠程模式啟動,遠程基礎結構配置成功。
執行遠程操作
配置好遠程基礎結構,就可以執行遠程操作了。遠程操作主要依賴幾個Session(會話)命令和Invoke-Command命令來進行。常見的使用情況有三種場景:
場景一:遠程交互式會話
這個場景一般用于手動進行遠程操作,輸入命令,查看結果。方法很簡單。進入交互式會話的命令是Enter-PSSession,退出時鍵入Exit-PSSession或者exit都可以。遠程交互式操作期間,輸入的命令在遠程計算機上運行,就像直接在遠程計算機上輸入并執行這些命令一樣。期間所定義的變量和命令的執行結果在退出交互式會話之后不再可用。
場景二:腳本塊、腳本文件的一次性執行
這種場景,是在本地計算機與遠程計算機上建立一個臨時會話。將腳本塊或者腳本文件的內容發送到遠程計算機執行,并將結果發回本地計算機。這種方法執行效率很高,是PowerShell推薦的執行遠程命令的方法。除非需要在會話中共享數據,否則建議使用該方法。
場景三:腳本塊、腳本文件在命名會話中執行
這種場景是最復雜的,也是功能最強大的。會話會保持所有定義的變量、函數和腳本,導入的模塊和管理單元,有利于共享數據。使用方法如下:
1、定義會話: 請使用new-pssession命令定義會話,如$session1 = new-pssession –computer server1。(如果必要請使用Credential參數。)
2、在會話中遠程執行腳本(或者腳本文件): 請使用Invoke-Command命令執行遠程腳本,如Invoke-Command -Session $session1 -ScriptBlock {dir c:\}或者Invoke-Command -Session $session1 -FilePath .\dirDriveC.ps1
3、獲得結果: 可以將執行結果賦于變量,如$sub = Invoke-Command -Session $session1 -ScriptBlock {dir c:\}或者$sub = Invoke-Command -Session $session1 -FilePath .\dirDriveC.ps1
后續命令可參照步驟2或者3繼續執行,所有執行的命令就好像在同一個上下文中執行一樣。
結語
網絡時代的Shell或者腳本語言必須具有很強的網絡處理能力,PowerShell就是這樣的語言。微軟的產品一般來說將安全性看得很重,所以PowerShell在網絡處理方面有諸多限制。比如PowerShell不能在遠程機器上顯示界面,即使是有界面的程序,也只能在后臺運行。熊掌和魚肉不可兼得,好在我們總能找到一些解決辦法。比如上述問題可以借助微軟的PsExec工具來實現,詳細信息見Windows Sysinternals.
您可能感興趣的文章:- PowerShell遠程安裝MSI安裝包、EXE可執行程序的方法
- PowerShell小技巧之啟動遠程桌面連接
- PowerShell小技巧之添加遠程防火墻規則
- Powershell小技巧--遠程對比服務配置
- Powershell小技巧之非相同域或信任域也能遠程
- Powershell小技巧之開啟關閉遠程連接
- 使用HTTP api簡單的遠程執行PowerShell腳本