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