es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Write-Host se duplica después de ejecutarse como comando remoto

Estoy tratando de ejecutar de forma remota este código:

$servers = @("myserver.local")
Invoke-Command -ScriptBlock {

  # 

  Write-Host "Test1:" "xxx";
  hostname
  Write-Host "Test2:" "yyy";

  #

} -ComputerName $servers

Y obtengo esta salida:

Test1: xxx
Test1: xxx
myserver
Test2: yyy
Test2: yyy

Salida esperada:

Test1: xxx
myserver
Test2: yyy

Como puedes ver, la salida de Write-Host se duplica, pero hostname está bien.
¿Por qué?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La salida de Write-Host se duplica porque Invoke-Command ejecuta el bloque de script en cada servidor especificado en el array $servers. Por lo tanto, el resultado de Write-Host se imprime dos veces, una vez por cada servidor.

    Para evitar este comportamiento, puedes utilizar el parámetro -ThrottleLimit 1 de Invoke-Command para ejecutar el bloque de script en cada servidor de forma secuencial en lugar de concurrente. Esto asegurará que la salida de Write-Host no se duplique.

    Por ejemplo:

    $servers = @("myserver.local")
    Invoke-Command -ScriptBlock {
        #############
        Write-Host "Prueba1:" "xxx";
        hostname
        Write-Host "Prueba2:" "yyy";
        #############
    } -ComputerName $servers -ThrottleLimit 1
    

Comments are closed.