Powershell: Execute exe on remote server and capture output

Posted by user364825 on Server Fault See other posts from Server Fault or by user364825
Published on 2012-09-28T14:48:40Z Indexed on 2012/09/28 15:40 UTC
Read the original article Hit count: 496

Filed under:
|

I am trying to script the execution of an installer on remote web servers. The installer in question is also a Windows Service that hosts NServiceBus. If RDP'd into the server, the application is installed by the following command:

&"$theInstaller" /install /serviceName:TheServiceName

The installer prints output about its progress registering the service and connecting to the database to stdout, among other things.

This works fine from an RDP session, but when I execute it remotely via PS, I get a you-can't-do-this-over-the-network message if I execute it directly or via Invoke-Command -computername $theRemoteServer:

System.IO.FileLoadException: Could not load file or assembly 'file://\\theRemoteServer\c$ \thePath\AutoMapper.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515) ---> System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See http://go.microsoft.com/fwlink/?LinkId=155569 for more information.

(Note: I added an additional "\" to the path in the first line in order to get it to show up correctly in the preview on this site.)

This, and other DLLs, are loaded by the service, and the service's execution context cannot, apparently, be remotified.

I have also tried using Invoke-WmiMethod, which does something, but it's not clear what, and the output from the installer is lost:

Invoke-WMIMethod win32_process create '"$theInstaller" /install /serviceName:TheServiceName' -ComputerName $server (with and without cmd.exe /k before the intaller reference):

__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 2
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
ProcessId :
ReturnValue : 9

How does one remotely execute such an EXE and capture the output?

Thanks!

© Server Fault or respective owner

Related posts about powershell

Related posts about remote