Question

Je suis en train d'écrire un script Powershell qui prendra une liste de commandes puis les exécuter sur une machine distante, je le code suivant:

foreach($command in $commands)
{
  Invoke-Command -computer "BNEBAK" -scriptblock{"$command"}
}

Ce qui ne jette pas des erreurs mais aussi ne fonctionne pas en fait la commande (par exemple servicename stop-service). $ commandes sont lues à partir d'un fichier texte passé comme argument lorsque le script est appelé, je sais que le reste de ce script fonctionne parce que je l'ai utilisé pour faire des commandes locales avec Invoke-Expression pendant un certain temps.

Toute aide serait fantastique.

Était-ce utile?

La solution

Le code correct serait

$commands = @(get-content com.txt)
for($command in $commands) { 
  $scriptblock = $ExecutionContext.InvokeCommand.NewScriptBlock($command) 
  Invoke-Command -computer $computer -scriptblock $scriptblock 
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top