Saltar al contenido

¿Cómo paso una variable local a un “Invoke-Command” remoto?

Solución:

En PowerShell 4 (3+ en realidad) la forma más fácil es usar el Using modificador de alcance:

Invoke-Command -ComputerName winserver -ScriptBlock { 
    Get-FileHash E:test$Using:dest.zip -Algorithm SHA1 
}

Para una solución que funcione con todas las versiones:

Invoke-Command -ComputerName winserver -ScriptBlock {
    param($myDest)

    Get-FileHash E:test$myDest.zip -Algorithm SHA1 
} -ArgumentList $dest

Para complemento útil respuesta de briantist:

El bloque de script pasó a Invoke-Command se ejecuta (según lo previsto) en el remoto máquina, usando el remoto variables de la máquina por defecto.

Por lo tanto, para usar un local variable (valor), se necesitan pasos adicionales (para decirlo de otra manera: dentro de un bloque de script ejecutado de forma remota, no puede simplemente referirse a variables locales como lo haría normalmente, como con $dest):

  • PD v3 + ofrece el using: modificador de alcance por uso directo de una variable local dentro del bloque de script – Ver el primer comando de briantist.

    • Tenga en cuenta que using: solo funciona cuando Invoke-Command en realidad se dirige a un remoto máquina, como con el -ComputerName parámetro.
  • La única opción que también funciona en versiones anteriores es pasar la variable local como un parámetro al bloque de secuencia de comandos. – ver el segundo comando de briantist.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *