Glowie
Glowie

Reputation: 2309

Powershell execute commandline locally

Powershell script executes commandline on local machine

$j = "remote_machine"

$comp = "\\"+$j

$command = 'D:\PSTools\PsExec.exe $comp -u Administrator -p plaintextpassword -accepteula powershell.exe c:\share\script.ps1'

Invoke-Expression "& $command"

This works, but it outputs following

PsExec.exe : At line:1 char:1 + & D:\PSTools\PsExec.exe $comp -u Administrator -p plaintextpassword -accepteula powersh ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError PsExec v2.0 - Execute processes remotely Copyright (C) 2001-2013 Mark Russinovich Sysinternals - www.sysinternals.com Connecting to remote_machine...Starting PSEXESVC service on remote_machine...Connecting with PsExec service on remote_machine...Starting powershell.exe on remote_machine... powershell.exe exited on remote_machine with error code 0.

How to fix?

Upvotes: 0

Views: 1178

Answers (1)

TheMadTechnician
TheMadTechnician

Reputation: 36332

After re-reading your question I see that this is the standard PSExec vs PowerShell issue that has been seen and discussed before. This is due to the fact that PSExec outputs its header lines to the stderr (Standard Error) stream for some of its text. The execution works fine, and it does show an exit code of 0 indicating that there is not actually an error.

This issue is only evident in PowerShell ISE, not the standard PowerShell console (unless you redirect StdErr to StdOut with PSExec <command & args> 2>&1 or something similar). To work around this, if you are going to run the script in the ISE, you can use Start-Process's -RedirectStandardError argument, or redirect StdErr through other means.

Upvotes: 1

Related Questions