PowerShell連接遠程主機運行遠程命令


PowerShell主要采用Web Services for Mangement(WS-MAN)進行遠程處理,WS-MAN完全基於Http(默認5985)或者Https(默認5986)進行工作,這樣保證在需要的情況下,能夠輕易透過防火牆進行作業(因為每種協議都使用唯一的端口進行通信)。微軟對WS-MAN的實現是Windows Remote mangement(WinRM)。WinRM是一個基於SOAP的后台服務。

 

PowerShell連接常規遠程主機

1. 在遠程機器上以Administrator角色打開PowerShell執行以下命令,啟動允許遠程連接

Enable-PsRemoting

2. 在客戶機器 (本地) 執行以下命令,將遠程機器IP地址加入可信主機列表

Set-Item wsman:\localhost\Client\TrustedHosts -value <Remote Host IP Address>

3. 在客戶機器 (本地) 輸入以下命令, 在彈出對話框輸入密碼,以交互的方式連接遠程主機

Enter-PSSession -ComputerName <Remote Host IP Address> -Credential <UserName>

4. PowerShell遠程命令的基本使用見官方文檔: Running Remote Commands

  • Start an Interactive Session (Enter-PSSession and Exit-PSSession)
  • Run a Remote Command / Script (Invoke-Command)
  • Establish a Persistent Connection (New-PSSession)

 

使用PowerShellHttp方式連接Azure虛擬機

1. 同以上常規連接遠程主機設置

1. 若虛擬機安全受網絡完全組(Network Security Group)管控,設置允許5985入棧

2. 若虛擬機綁定了負載均衡器(load balancer),為5985端口設置入站NAT規則(Inbound NAT Rules), 或者為了隱藏實際端口,為5985端口運行狀況探測(probes)和負載均衡規則(load Balancing Rules)

 

 使用PowerShell以Https方式連接Azure虛擬機

1. 同以上常規連接遠程主機設置

2. 打開Azure遠程虛擬機(Windows)防火牆設置,設置允許5986入棧

3. 若虛擬機安全受網絡完全組(Network Security Group)管控,設置允許5986入棧

4. 若虛擬機綁定了負載均衡器(load balancer),為5986端口設置入站NAT規則(Inbound NAT Rules),或者為了隱藏實際端口,為5986端口運行狀況探測(probes)和負載均衡規則(load Balancing Rules)

5. 需使用以下命令連接遠程主機, 詳細參數設置見: Enter-PSSession

# 設置會話,忽略遠程機器的SSL證書驗證
$SessionOption
= New-PsSessionOption SkipCACheck -SkipCNCheck Enter-PSSession -ConnectionUri https://<Remote Host IP Address>:5986 -Credential <User Name> -SessionOption $SessionOption # 另一種參數形式 Enter-PSSession -ComputerName <Remote Host IP Address> -Port 5986 -UseSSL -Credential <User Name> -SessionOption $SessionOption

 

從PowerShell 6開始,除了WS-MAN之外,遠程處理技術還可以基於SSH協議。在最新的Windows 10和Windows Server 2019中,可以使用OpenSSH連接遠程機器,詳細文檔參見:PowerShell remoting over SSH and OpenSSH in Windows, 另外,OpenSSH客戶端在最新的Windows 10和Windows Server 2019中已默認安裝,在 設置\應用\可選功能 列表下可以找到(見下圖), 可以通過上方的添加功能按鈕安裝OpenSSH服務器。

 

 

更多參考:

1. Enable PowerShell remoting on Azure RM virtual machines

2. Copy files to Azure VM using PowerShell Remoting

3. Secrets of PowerShell Remoting

3. 遠程管理WinRM,Enter-PSSession (Enable-PSRemoting = Set-WSManQuickConfig = winrm quickconfig)

4. PowerShell 遠程執行任務

5. Windows開啟WinRM服務 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM