Pregunta

Estoy tratando de escribir un script de PowerShell que tendrá una lista de comandos y luego ejecutarlos en una máquina remota, tengo el siguiente código:

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

Lo que no lanza ningún error, sino también en realidad no ejecuta el comando (por ejemplo servicename parada de servicio). $ comandos son leídos desde un archivo de texto pasado como argumento cuando se llama al script, sé que el resto de este script funciona porque he estado usando para hacer comandos locales con Invoke-Expresión durante algún tiempo.

Cualquier ayuda sería fantástico.

¿Fue útil?

Solución

El código correcto sería

$commands = @(get-content com.txt)
for($command in $commands) { 
  $scriptblock = $ExecutionContext.InvokeCommand.NewScriptBlock($command) 
  Invoke-Command -computer $computer -scriptblock $scriptblock 
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top