This question already has an answer here:
Problems using local variables in a remote commands

(1个答案)


去年关闭。




我正在尝试使用Invoke-Command检索位于远程服务器上的文件的哈希。当我给出如下完整路径时,它工作正常:
Invoke-Command -ComputerName winserver -ScriptBlock {
    Get-FileHash -Path E:\test\testfile.zip -Algorithm SHA1
}

但是我需要通过一个变量来传递文件名,如下所示:
Invoke-Command -ComputerName winserver -ScriptBlock {
    Get-FileHash -Path "E:\test\$dest.zip" -Algorithm SHA1
}

如何在远程 session 的scriptblock中访问此变量?

最佳答案

在PowerShell 4(实际上是3+)中,最简单的方法是使用 Using scope modifier:

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

对于适用于所有版本的解决方案:
Invoke-Command -ComputerName winserver -ScriptBlock {
    param($myDest)

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

关于powershell - 如何将本地变量传递给远程 `Invoke-Command`?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35492437/

10-15 11:33