Domanda

Sto cercando di scrivere uno script PowerShell che avrà un elenco di comandi e poi eseguirli su una macchina remota, ho il seguente codice:

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

Il che non genera alcun errore, ma anche in realtà non esegue il comando (per esempio stop-service servicename). $ comandi vengono letti da un file di testo passato come argomento quando lo script viene chiamato, so che il resto di questo script funziona perché ho utilizzato per fare i comandi locali con Invoke-Expression per un certo tempo.

Qualsiasi aiuto sarebbe fantastico.

È stato utile?

Soluzione

Il codice corretto sarebbe

$commands = @(get-content com.txt)
for($command in $commands) { 
  $scriptblock = $ExecutionContext.InvokeCommand.NewScriptBlock($command) 
  Invoke-Command -computer $computer -scriptblock $scriptblock 
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top