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