web-dev-qa-db-fra.com

Comment exécuter un script powershell disponible sur une machine distante?

J'essayais d'exécuter un script sur un ordinateur distant. 

J'ai fait "Enable-PSremoting" sur la machine distante.

J'ai placé un script hello.ps1 dans une machine distante.

[Mon ordinateur client est Windows XP et l'ordinateur distant est Windows 2003]

Ensuite, à partir de mon ordinateur client, j'essayais d'exécuter le script.

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

J'ai l'erreur suivante.

Invoke-Command: Impossible de trouver le chemin 'C:\hello.ps1' car il ne l'a pas exister.

Je pense qu'il essaie de trouver le script de la machine cliente. 

Si j'essaye de courir 

invoke-command -computer $MachineName -command { C:\hello.ps1 }, Il exécute le script disponible sur la machine distante côté client.

Mais je voudrais exécuter le script distant dans la machine distante elle-même.

Comment faire pour exécuter le script disponible dans la machine distante?

Mis à jour: 

En réalité, cette commande "invoke-command -computer $MachineName -command { C:\hello.ps1 }" fonctionne du côté distant et renvoie le résultat au côté client. J'ai mal compris en voyant les valeurs de retour qu'il exécute côté client.

22
Samselvaprabu

Quand tu écris:

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

Le script C:\hello.ps1 sera extrait de l'ordinateur client et amené sur le serveur pour être exécuté. Donc, vous avez l'erreur le fichier n'existe pas car Invoke-Command recherche le fichier sur l'ordinateur client.

12
JPBlanc
1
David Brabant

J'avais exactement la même sonde et je l'ai résolue avec une combinaison de [WMICLASS] 's create() et Start-Process

Vérifiez ma réponse ici .

0
Ocelot

J'ai la même erreur mais j'ai accroché une session à distance dans une variable de votre code et enfin quelque chose qui fonctionne:

$s = New-PSSession -ComputerName "WTxxxxxL32" -Credential $credential

Invoke-Command -Session $s -Command {D:\ServerDLLDev\RemoteCOMInstall.ps1}

Il y a un million de solutions Invoke-etc, mais les plus simples ont finalement fonctionné pour moi. Merci à toi.

0
JustJohn