威海職業(yè)學(xué)院 趙永華
從 Windows Server 2012 開始,系統(tǒng)默認(rèn)會(huì)開啟PowerShell遠(yuǎn)程功能,以便于管理員在任何地點(diǎn)都可以建立PowerShell 會(huì)話。
但為此也會(huì)出現(xiàn)兩難局面:一方面這為通過PowerShell 遠(yuǎn)程管理虛擬機(jī)VM 提供了便利,但另一方面又存安全之虞。
此時(shí),我們可以借助Windows Server 2016 提供的PowerShell Direct 解決難題。
PowerShell Direct 的作用在于,當(dāng)我們關(guān)閉遠(yuǎn)程PowerShell 后,依然能夠借助PowerShell 管理VM,它準(zhǔn)許我們使用Hyper-V 主機(jī)上的PowerShell,此時(shí)繞開了VM 網(wǎng)絡(luò)棧層,所以無論VM 防火墻有何限制,也與PowerShell 是否遠(yuǎn)程無關(guān)。
大多數(shù)服務(wù)器通常并沒有專用鍵盤、鼠標(biāo)和監(jiān)視器,如今不再是只有走進(jìn)數(shù)據(jù)中心并坐在服務(wù)器控制臺(tái)上才能執(zhí)行管理任務(wù)的日子了。管理員在自己的辦公桌前仍然可以用PowerShell Direct,只要與Hyper-V 服務(wù)器建立PowerShell 遠(yuǎn)程會(huì)話,然后使用PowerShell Direct 連接到VM。當(dāng)然,此時(shí)需要知道VM 在哪個(gè)主機(jī)上運(yùn)行。
現(xiàn)在介紹具體操作內(nèi)容。首先,筆者安裝了一個(gè)名為Win10-1803 的Windows 10 虛擬機(jī),該VM 在名為Hyper-V-4 的Hyper-V 服務(wù)器上運(yùn)行。因此,要做的第一件事是在虛擬機(jī)上禁用PowerShell遠(yuǎn)程處理。為此,直接登錄VM,然后輸入“Disable-PSRemoting cmdlet”,如圖1 屏幕快照所示。
圖1 禁用遠(yuǎn)程PowerShell
禁用完成后,通過以下命令建立連通VM 的PowerShell 會(huì)話:
此時(shí)顯示連接失敗,此即意味著,由于禁用了PowerShell 遠(yuǎn)程功能,我們就不能建立連接VM 的PowerShell 會(huì)話,但此時(shí)我們可以利用PowerShell Direct 實(shí)現(xiàn)連接。
此時(shí)需要明確的是,我們所涉及的每臺(tái)機(jī)器都已加入一個(gè)公共域。這樣,第一步是建立與Hyper-V 服務(wù)器的PowerShell 會(huì)話,筆者稱之為Hyper-V-4。
具體命令如下:
圖2 顯示虛擬機(jī)的進(jìn)程列表
這樣,我們就與遠(yuǎn)程的Hyper-V 服務(wù)器連接成功?,F(xiàn)在該使用虛擬機(jī)了,盡管我們可以有很多管理任務(wù),這里筆者不妨僅僅列出虛擬機(jī)中正在運(yùn)行的進(jìn)程。執(zhí)行命令如下所示:
在上述Invoke-Command命令集中,指定虛擬機(jī)的名稱。包含在腳本塊中的所有命令都在虛擬機(jī)上執(zhí)行。盡管禁用了PowerShell 遠(yuǎn)程處理,但仍然能夠獲得虛擬機(jī)的進(jìn)程列表。
最后需要說明的是,使用PowerShell Direct 特性需要滿足一些前提條件。
首先,虛擬機(jī)和Hyper-V主機(jī)必須運(yùn)行Windows 10或者Windows Server 2016;
其次,還應(yīng)該確保使用Hyper-V 管理員賬戶登 錄 到Windows Server 2016 Hyper-V 主機(jī)當(dāng)中,所有虛擬機(jī)必須運(yùn)行在“本地”Hyper-V 主機(jī)當(dāng)中。