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