2017-05-05 1 views
1

Je suis novice dans Powershell et j'utilise ps ise pour écrire un script ps qui exécute un fichier .exe à distance sur un autre serveur.Les commandes Powershell ne fonctionnent que lorsque j'exécute la sélection dans ise

Lorsque je clique sur run dans ise, le script ne semble rien faire. Toutefois, lorsque je clique avec le bouton droit sur les lignes de code individuelles dans le script ps, je peux voir dans la console ps et le serveur cible que chaque ligne de code fonctionne.

Qu'est-ce qui me manque pour que ça fonctionne quand je clique simplement sur Exécuter le script dans le script ou lorsque je lance le script depuis la ligne de commande?

Voici ce que le script ressemble fondamentalement:

Enter-PSSession -ComputerName MyServer1 
D:\Somefolder\On\TargetServer\theremote.exe 
Exit-PSSession 

Je vous remercie de l'aide ou des conseils à ce sujet.

Répondre

3

Laissez-moi vous expliquer.

Enter-PSsession crée essentiellement une session interactive avec l'ordinateur distant.

Ainsi, une fois la session créée, vous pouvez exécuter toutes les commandes qu'interactif renverra le résultat de l'ordinateur distant. Vous devez utiliser invoke-command pour accomplir votre travail. Il devrait être comme:

Invoke-Command -ComputerName MyServer1 -ScriptBlock {& 'D:\Somefolder\On\TargetServer\theremote.exe'} 

Maintenant, par défaut, il utilise l'authentification Windows. Si vous souhaitez spécifier des informations d'identification, vous pouvez utiliser le commutateur -Credential.

Ou une autre méthode consiste à créer une session à distance en utilisant d'abord new-pssession, puis stocker la session dans une variable. Enfin, vous pouvez spécifier la session dans la Invoke-commande comme -SessionName

Selon les commentaires, c'est comment vous pouvez passer les paramètres (je passe seulement 1 paramètre ici):

Invoke-Command -ComputerName MyServer1 -ScriptBlock { param ($param1) & 'D:\Somefolder\On\TargetServer\theremote.exe' -something $param1 } -ArgumentList "param1Value" 

J'espère que ça aide.

+0

Merci. Je vais essayer. Je dois aussi envoyer des paramètres à l'exe sur l'autre serveur. Comment ferais-je cela en utilisant votre code? – tmontez36

+0

Pour les paramètres, vous pouvez utiliser argumentlist switch dans la commande invoke et vous pouvez y accéder en tant que param dans le scriptblock. Si vous voulez, je peux modifier la réponse avec les paramètres –

+0

Oui, pouvez-vous s'il vous plaît modifier la réponse pour montrer comment les paramètres peuvent être utilisés? – tmontez36