2010年9月3日 星期五

PowerShell - 如何執行遠端端機器的命令

  1. 在被執行端機器啟動 winrm, 並自動設定 : 執行winrm quickconfig
過程如下:
PS D:\>winrm quickconfig
WinRM 未設定為在此電腦上接收要求。
必須進行下列變更:
設定 WinRM 服務類型為自動啟動。
啟動 WinRM 服務。
進行這些變更 [y/n]? y
WinRM 已經更新以接收要求。
WinRM 服務類型順利變更。
WinRM 服務已啟動。
此電腦上的 WinRM 尚未設定為允許存取以進行遠端管理。
必須進行下列變更:
在 HTTP://* 上建立 WinRM 接聽程式,以接受對於此電腦之任何 IP 的 WS-Man 要求。
啟用 WinRM 防火牆例外。
進行這些變更 [y/n]? y
WinRM 已經更新,可用於遠端管理。
已在 HTTP://* 上建立 WinRM 接聽程式,以接受對於此電腦之任何 IP 的 WS-Man 要求。
WinRM 防火牆例外已啟用。
  1. 執行單一遠端指令: Remote-Invoke
    1. Invoke-Command -ComputerName server01 -ScriptBlock { get-host }
      在遠端電腦(server01) 執行指令 get-host
    2. invoke-command -filepath c:\scripts\test.ps1 -computerName server01在遠端電腦(server01) 執行powershell script file c:\scripts\test.ps1
    3. 其它可用 help Invoke-Command -example 得到更多說明
  2. 啟一個remote interaction session, 然後在console中可直接革連續執行指令,像linux的ssh
    1. 開啟一個在server01的remote session, 命名為 testRemote
      command : New-PSSession -Name remoteTest -ComputerName server01
    2. 進入 remoteTest的remote session
      command : Enter-PSSession -Name remoteTest 此時 command prompt會在最前加上遠端電腦的名稱,  [server01] PS D:>
    3. 以後此console就是遠端電腦的console
    4. 離開
      command : Exit-PSSession
  3. Trouble Shooting
    1. 一般要能啟動遠端命令必需是administrator或屬於administrator group, 如是一般user則需設定付予權限, 如下 :
      Set-PSSessionConfiguration Microsoft.Powershell -ShowSecurityDescriptorUI
      執行以上命令後, 在command line回答"Y", 隨後會出現一UI供設定權限,此時加入user, 並勾選 [Allow Execute(Invoke)], 最後再回答"Y", 重新啟動 WinRM service
    2. reference : http://www.ravichaganti.com/blog/?p=1181

沒有留言: