Windows

使用 PowerShell 在遠端電腦上執行程序

  • February 21, 2015

如何使用 powershell 在遠端機器上執行程序?

執行此操作的一個很酷的新方法是使用WinRM。我已經在 Windows Server 2008 R2 上看到過這個展示,儘管有一個下載了 powershell v2 和 WinRM 用於其他 Windows 作業系統。

不那麼酷(或新)的方法是使用psexec,它不是 powershell,但我確信有某種方法可以通過 powershell-esque 語法呼叫它。

您還可以使用 WMI 並遠端啟動程序。它不會是互動式的,您必須相信它會自行結束。除了為 WMI 打開埠外,這不需要遠端電腦上的任何東西。

Function New-RemoteProcess {
   Param([string]$computername=$env:computername,
       [string]$cmd=$(Throw "You must enter the full path to the command which will create the process.")
   )

   $ErrorActionPreference="SilentlyContinue"

   Trap {
       Write-Warning "There was an error connecting to the remote computer or creating the process"
       Continue
   }    

   Write-Host "Connecting to $computername" -ForegroundColor CYAN
   Write-Host "Process to create is $cmd" -ForegroundColor CYAN

   [wmiclass]$wmi="\\$computername\root\cimv2:win32_process"

   #bail out if the object didn't get created
   if (!$wmi) {return}

   $remote=$wmi.Create($cmd)

   if ($remote.returnvalue -eq 0) {
       Write-Host "Successfully launched $cmd on $computername with a process id of" $remote.processid -ForegroundColor GREEN
   }
   else {
       Write-Host "Failed to launch $cmd on $computername. ReturnValue is" $remote.ReturnValue -ForegroundColor RED
   }
}

範例用法:

New-RemoteProcess -comp "puck" -cmd "c:\windows\notepad.exe"

引用自:https://serverfault.com/questions/77585