How to start remotely process in PowerShell How to start remotely process in PowerShell powershell powershell

How to start remotely process in PowerShell


You can try using WMI:

$command = "notepad.exe"$process = [WMICLASS]"\\$CompName\ROOT\CIMV2:win32_process"$result = $process.Create($command) 

If you need passing credentials:

$cred = get-credential$process = get-wmiobject -query "SELECT * FROM Meta_Class WHERE __Class = 'Win32_Process'" -namespace "root\cimv2" -computername $CompName -credential $cred$results = $process.Create( "notepad.exe" )


$pathProg may be not be available within the script block which gets run eventually. You might want to pass it as an argument to the script block

Invoke-Command -session $mySession -command { param($progPath) ... } -argumentlist $progPath

Not that the outer -argumentlist, passes the arguments to the scriptblock.


Have you tried building the command as a string locally, then passing it to the Invoke-Command script as a ScriptBlock?

$remoteSession = New-PSSession -ComputerName 'MyServer'$processName = 'MyProcess'$command = 'Start-Service ' + $processName + ';'Invoke-Command -Session      $remoteSession `               -ScriptBlock  ([ScriptBlock]::create($command))Remove-PSSession $remoteSession

If you want feedback from the remote server then you can get the output via Write-Output, like this:

$command = 'Start-Service ' + $processName + ' | Write-Output ;'