在域控上打 開Windows Power Shell ISE集成腳本環(huán) 境(如 圖 1),執(zhí) 行“Get-AD Computer -filter *”命令,可以返回域中所有計(jì)算機(jī)信息。執(zhí)行“Get-AD Computer-filter * |select name”命令,只顯示域中所有主機(jī)的名稱。在腳本編輯面板 中 輸 入“STOP-Computer-Computername xxx -force”,其中的“xxx”為具體的主機(jī)名稱(以下與之相同),點(diǎn)擊F5鍵,可以將該主機(jī)強(qiáng)制關(guān)機(jī)。使用“Invoke-Command”命令,可以向指定的主機(jī)上發(fā)送指定的命令,函數(shù),腳本和腳本塊。
圖1 Windows PowerShell ISE集成腳本環(huán)境
PowerShell的遠(yuǎn)程管理功能,分為非持久性會(huì)話,持久性會(huì)話和隱式遠(yuǎn)程管理等類別。非持久性會(huì)話,利用Invoke-Command命令,在執(zhí)行命令后不保持連接,遠(yuǎn)程主機(jī)上的PowerShell進(jìn)程立即退出。通過在命令后面添加腳本塊,執(zhí)行后將其推送到目標(biāo)主機(jī)上,然后在目標(biāo)主機(jī)上執(zhí)行該腳本塊。也可以進(jìn)入建立的會(huì)話,在其中直接執(zhí)行各種指令。持久性會(huì)話使用的是New-PSSession等命令,可持續(xù)性地保持連接狀態(tài),斷開后可重新連接。隱式遠(yuǎn)程管理,可同時(shí)管理多臺(tái)計(jì)算機(jī)。
PowerShell默認(rèn)使用Windows身份驗(yàn)證方式,在域環(huán)境和工作組環(huán)境中,身份驗(yàn)證是存在差異的,在特定情況下,還能需要使用額外的參數(shù)。默認(rèn)情況下,本地或者域管理員組成員擁有完全控制權(quán)限。對(duì)于非管理員組的成員來,必須添加到本地或者域中的Remote Management Users組中,才擁有遠(yuǎn)程訪問權(quán)限。對(duì)權(quán)限進(jìn)行設(shè)定,需要使用“Set-PSSession Configuration Microsoft.Powershell-Show Security DescriptorUI”命令來實(shí)現(xiàn)。
為了保證連接的安全,最好配置證書來執(zhí)行身份認(rèn)證和數(shù)據(jù)加密處理,可以在被控機(jī)上打 開PowerShell ISE窗口,執(zhí) 行“Get-Childltem wsman:local hostListener |select *” 命令,顯示偵聽器信息,在返回信息中的“Keys”欄中顯 示“{Transport=HTTP,Address=*}”,即默認(rèn)使用一個(gè)偵聽器,屬于HTTP協(xié)議,可以偵聽來自所有的地址的網(wǎng)絡(luò)連接。使用HTTPS協(xié)議安全性更高,但是需要使用數(shù)字證書。
假設(shè)在域控上安裝有CA證書頒發(fā)機(jī)構(gòu),在本機(jī)上執(zhí)行“mmc”程序,在控制臺(tái)中點(diǎn)擊菜單“文件→添加/刪除管理單元”項(xiàng),在左側(cè)選擇“證書”項(xiàng),點(diǎn)擊“添加”,選擇“計(jì)算機(jī)賬戶”,將其添加進(jìn)來。在控制臺(tái)左側(cè)選擇“證書→個(gè)人”,在右鍵菜單上點(diǎn)擊“所有任務(wù)→申請(qǐng)新證書”,在向?qū)Ы缑嬷悬c(diǎn)擊“下一步”,選擇“Active Directory注冊(cè)策略”,在下一步窗口中選擇“計(jì)算機(jī)”項(xiàng),點(diǎn)擊“注冊(cè)”來申請(qǐng)一張計(jì)算機(jī)證書。打開該證書的屬性窗口,在“常規(guī)”面板中的“頒發(fā)給”欄中顯示安裝證書的主機(jī)信息,例如“server1.xxx.com”。 之 后在PowerShell 窗口執(zhí)行相關(guān)的命令來創(chuàng)建偵聽器,當(dāng)客戶端進(jìn)行連接時(shí),可以使用HTTPS進(jìn)行安全連接。
執(zhí) 行“New-Item WSMan:localhostListener-Transport https-Credential "xxxxxx"”命令,其中的“xxxxxx”為證書的指紋,在“Address:*”提示欄中可以設(shè)置地址偵聽的范圍,默認(rèn)為全部地址。這樣,就創(chuàng)建了一個(gè)HTTPS的偵聽器。執(zhí)行“Get-Childltem wsman:localhostListener”命令,會(huì)顯示默認(rèn)的HTTP偵聽器和上述創(chuàng)建的HTTPS偵聽器。
在控制端上打開PowerShell窗口,執(zhí)行“gpupdate /force”命令,來刷新組策略。因?yàn)槭窃谟颦h(huán)境中,在被控段和控制端都是以相同的域管理員身份登錄,所以可以執(zhí)行“Enter-PSSession -computerName server1.xxx.com -UseSSL”命令,使用HTTPS協(xié)議連接被控機(jī)。進(jìn)入連接會(huì)話后,就可以在直接在該機(jī)上執(zhí)行各種命令了。
默認(rèn)狀態(tài)下,PowerShell的遠(yuǎn)程管理功能是打開的。也可以在PowerShell中執(zhí) 行“Enbale-PSRemoting-force”命令,激活遠(yuǎn)程管理功能。需要對(duì)IP為192.168.1.10的主機(jī)進(jìn)行遠(yuǎn)程關(guān)機(jī),可以執(zhí)行“Invoke-Command -ComputerName 192.168.1.10-Script{Stop-Computer}”,該機(jī)就可以自動(dòng)關(guān)機(jī)了。
在工作組環(huán)境,因?yàn)樾枰獔?zhí)行身份驗(yàn)證操作,如果宿主機(jī)和被控機(jī)之間的管理員密碼不同,是無法執(zhí)行上述命令的。需要執(zhí)行“Invoke-Command -ComputerName 192.168.1.10-Script{Stop-Computer-Force} -Credential administrator”命 令,指定登錄是使用的賬戶名,這 里 為Administrator,在身份認(rèn)證窗口中輸入其密碼后,才可以執(zhí)行該 命 令。 執(zhí) 行“Enter-PSSession -ComputerName 192.168.1.10 -Credential administrator”命令,可以進(jìn)入連接會(huì)話中,猶如在該機(jī)上打開了PowerShell命令窗口,可以執(zhí)行各種命令。
執(zhí)行“hostname”命令,可以顯示該機(jī)的名稱。執(zhí)行“Add-WindowsFeather webserver”命令,可以在目標(biāo)機(jī)上安裝IIS組件。對(duì)于管理員來說,有時(shí)希望遠(yuǎn)程管理域控上的活動(dòng)目錄,在域中某臺(tái)服務(wù)器上的PowerShell中 執(zhí) 行“PSSession DCServer”命 令,這 里 的“DCServer”為域控名稱,進(jìn)入域控上的PowerShell會(huì)話界面,在“[dcserver]:PS C:>”提示欄中輸入所需的命令,猶如在域控上操作PowerShell一樣,執(zhí)行“exit”命令返回。用戶也可以創(chuàng)建新的會(huì)話線程,執(zhí)行“New-PSSession DCServer”命令,在返回信息中的“State”列表中如果顯示“Opened”字樣,說明該會(huì)話連接成功。執(zhí)行“Get-Module-PSSession(Get-PSSession)-ListAvailable”命令,可以從已經(jīng)建立的會(huì)話中獲取目標(biāo)主機(jī)上的所有模塊信息。
當(dāng)針對(duì)多個(gè)目標(biāo)主機(jī)創(chuàng)建多個(gè)會(huì)話后,最好為不同的會(huì)話添加對(duì)應(yīng)的前綴,這樣就可以知曉命令是從哪臺(tái)目標(biāo)機(jī)上運(yùn)行的。例如,執(zhí) 行“$pssession1 =New-PSSession -Computer dcserver.xxx.com”命 令,創(chuàng)建一個(gè)新的會(huì)話,并設(shè)置變 量“$pssession1”。 執(zhí)行“Import-PSSession-Session $pssession1-Prefix dcserver”命 令,可以添加名為“dcserver”的前綴。這里所說的前綴是和具體的命令綁定起來使用的。因?yàn)镻owerShell在默認(rèn)啟動(dòng)時(shí),只導(dǎo)入常用的模塊。在本地操作時(shí),需要導(dǎo)入目標(biāo)主機(jī)上的所需的模塊,來滿足遠(yuǎn)程控制的需要。例如,執(zhí)行“Import-PSSession -Session$pssession1 -Module ActiveDirectory”命令,導(dǎo)入活動(dòng)目錄管理模塊。之后可以在本地上執(zhí)行“Get-ADUser -Filter *”等命令,來執(zhí)行對(duì)應(yīng)的管理操作。
服務(wù)器池只是一個(gè)抽象的概念,在實(shí)際連接時(shí)只能連接到其中某臺(tái)服務(wù)器上。當(dāng)連接成功后,如果試圖對(duì)服務(wù)器池中的其他主機(jī)遠(yuǎn)程控制,就需要以當(dāng)前連接的服務(wù)器為跳板,來連接池中其他服務(wù)器,這時(shí)就需要明確指定憑據(jù)信息,這就涉及到遠(yuǎn)程憑據(jù)委派功能。
執(zhí) 行“New-PSSession server1.xxx.com”命令,連接到服務(wù)器場(chǎng)中Server1服務(wù)器上。執(zhí)行“Import-PSSession (Get-PSSession)-Prefix server 1-AllowClobber”命令,導(dǎo)入會(huì)話連接并設(shè)置前綴,允許覆蓋本地命令。但是,當(dāng)試圖在PowerShell中對(duì)該機(jī)執(zhí)行特定的操作(例如加載腳本和模塊等),系統(tǒng)會(huì)顯示無法訪問本地服務(wù)器場(chǎng)的提示。因?yàn)閷?duì)該機(jī)的遠(yuǎn)程訪問,可能會(huì)涉及到對(duì)場(chǎng)中其他服務(wù)器(例如SQL Serve服務(wù)器等)的訪問操作,這就需要使用到遠(yuǎn)程憑據(jù)委派功能。
在本地機(jī)上執(zhí)行“Enable-WSManCredSSP-Role Client-Delegate Computer"server1.xxc.com"”命令,允許向Server1委派憑據(jù),這里的目標(biāo)主機(jī)名稱需要使用FQDN格式。執(zhí)行“Get-WSManCredSSP”命令,可以看到系統(tǒng)提示已將計(jì)算機(jī)配置為允許將新憑據(jù)委派到目標(biāo)計(jì)算機(jī)中。
登錄到Server1上,執(zhí)行“Enable-WS Man Cred SSP-Role Server”命令,允許該機(jī)接受憑據(jù)委派。在返回的提示信息中顯示基本身份驗(yàn)證處于禁止?fàn)顟B(tài),Kerberos驗(yàn)證處于允許狀態(tài),為了便于測(cè)試,可以在本地機(jī)上 執(zhí) 行“Enter-PSSession-Computer Name server1.xxx.com -Authentication Credssp -Credential administrator@xxx.com”命令,使用憑據(jù)委派方式進(jìn)入連接會(huì)話(后面要設(shè)置目標(biāo)服務(wù)器池的管理員賬戶名)。在打開的身份驗(yàn)證窗口中輸入該賬戶的密碼即可。