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 cuandoInvoke-Command
en realidad se dirige a un remoto máquina, como con el-ComputerName
parámetro.
- Tenga en cuenta que
-
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.