PowerShell入門教程之遠(yuǎn)程操作運(yùn)行PowerShell的方法
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)開(kāi)啟了遠(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)行。熊掌和魚(yú)肉不可兼得,好在我們總能找到一些解決辦法。比如上述問(wèn)題可以借助微軟的PsExec工具來(lái)實(shí)現(xiàn),詳細(xì)信息見(jiàn)Windows Sysinternals.
相關(guān)文章
PowerShell中的TimeSpan時(shí)間差對(duì)象使用實(shí)例
這篇文章主要介紹了PowerShell中的TimeSpan對(duì)象使用實(shí)例,TimeSpan對(duì)象表示一個(gè)時(shí)間差,本文介紹了多種獲取時(shí)間差的方法,需要的朋友可以參考下2014-08-08Powershell小技巧之查看安裝的.Net framework版本信息
本文主要介紹了使用powershell查看安裝的.net framework的版本信息,非常簡(jiǎn)單使用,有需要的朋友參考下2014-09-09PowerShell中給函數(shù)參數(shù)設(shè)置幫助信息的例子
這篇文章主要介紹了PowerShell中給函數(shù)參數(shù)設(shè)置幫助信息的例子,特別是給必選參數(shù)寫(xiě)一個(gè)說(shuō)明,這樣使用的人就會(huì)更加方便,需要的朋友可以參考下2014-07-07Windows Powershell過(guò)濾管道結(jié)果
通過(guò)管道可以過(guò)濾某些對(duì)象和對(duì)象的屬性,這個(gè)功能很實(shí)用,因?yàn)楹芏鄷r(shí)候我們并不是對(duì)所有的結(jié)果感興趣,可能只會(huì)對(duì)某些結(jié)果感興趣。2014-09-09PowerShell中的特殊變量$null介紹和創(chuàng)建多行注釋小技巧
這篇文章主要介紹了PowerShell中的特殊變量$null介紹和創(chuàng)建多行注釋小技巧,需要的朋友可以參考下2014-08-08PowerShell腳本開(kāi)發(fā)之批量掃描IP和端口
最近在不斷嘗試之下,找到了對(duì)指定范圍的IP段進(jìn)行掃描和對(duì)端口進(jìn)行掃描的方法,本文將會(huì)介紹如何通過(guò)PowerShell批量掃描IP及其對(duì)應(yīng)的端口。2014-10-10PowerShell腳本開(kāi)發(fā)之收發(fā)UDP消息包
上篇文章我們介紹了使用PowerShell收發(fā)TCP消息包,今天我們來(lái)介紹下使用Powershell收發(fā)UDP小細(xì)胞的方法2014-10-10PowerShell小技巧之執(zhí)行SOAP請(qǐng)求
SOAP(Simple Object Access Protocol )簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議是在分散或分布式的環(huán)境中交換信息的簡(jiǎn)單的協(xié)議,是一個(gè)基于XML的協(xié)議,它包括四個(gè)部分:SOAP封裝(envelop),SOAP編碼規(guī)則(encoding rules),SOAP RPC表示(RPC representation,SOAP綁定(binding)2014-10-10PowerShell函數(shù)中限制數(shù)組參數(shù)個(gè)數(shù)的例子
這篇文章主要介紹了PowerShell中限制函數(shù)的數(shù)組參數(shù)個(gè)數(shù)的例子,可以控制數(shù)組的參數(shù)個(gè)數(shù)在指定范圍內(nèi),需要的朋友可以參考下2014-07-07