Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to execute a powershell script available in remote machine?

I was trying to execute a script in remote computer.

I did "Enable-PSremoting" in the remote machine.

I placed a script hello.ps1 in remote machine.

[My client machine is Windows XP and remote computer is Windows 2003 ]

Then from my client computer i was trying to execute the script.

invoke-command -computer $MachineName -filepath "C:\hello.ps1" 

I got the following error.

Invoke-Command : Cannot find path 'C:\hello.ps1' because it does not exist.

I think it tries to find script from client machine.

If i try to run

invoke-command -computer $MachineName -command { C:\hello.ps1 } , It executes the script available in remote machine in client side.

But i would like to execute the remote script in remote machine itself.

How to make it to run the script available in remote machine?

Updated:

Actually this command "invoke-command -computer $MachineName -command { C:\hello.ps1 }" works in remote side and returned the result to client side. I misunderstood by seeing the return values that it is executing at client side.

like image 908
Samselvaprabu Avatar asked May 04 '12 07:05

Samselvaprabu


People also ask

How do I run a PowerShell script as administrator on a remote computer?

To start the ISE with administrator privileges: Click on the Start menu (or the Windows key). Type powershell ise in the search box, and select Windows PowerShell ISE. Press CTRL+SHIFT+ENTER to start the ISE (enter the administrator credentials if prompted).

What are the two ways to execute commands in PowerShell on a remote machine?

And the Invoke-Command and New-PSSession commands are two ways to execute PowerShell cmdlets on remote systems.


2 Answers

When you write :

invoke-command -computer $MachineName -filepath "C:\hello.ps1" 

The script C:\hello.ps1 will be taken from the client computer and brought to the server to be executed. So you've got the error file does not exist because Invoke-Command is looking for the file in the client computer.

like image 70
JPBlanc Avatar answered Sep 25 '22 19:09

JPBlanc


I got the same error but I hooked a Remote session in a variable in your code and finally have something that works:

$s = New-PSSession -ComputerName "WTxxxxxL32" -Credential $credential  Invoke-Command -Session $s -Command {D:\ServerDLLDev\RemoteCOMInstall.ps1} 

There are a million Invoke-etc solutons but the simplest worked finally for me. Thanks to you.

like image 30
JustJohn Avatar answered Sep 24 '22 19:09

JustJohn