获取脚本块中的所有远程变量

时间:2016-04-13 17:51:56

标签: powershell powershell-v5.0

有没有办法在脚本块中获取所有远程变量的列表?

请考虑以下事项:

$x = 1
$block = { Write-Host $using:x }
Invoke-Command -Session (New-PSSession) -ScriptBlock $block

在$ block内部,有没有办法获得可用的$ using:scoped变量列表?

$x = 1
$block = { Get-Variable }
Invoke-Command -Session (New-PSSession) -ScriptBlock $block

不会将$ x作为可用变量

1 个答案:

答案 0 :(得分:1)

简短的回答是:你做不到。

远程端对变量一无所知。它们被序列化,然后嵌入了反序列化代码和文字序列化XML。

如果您是编写脚本块的人,那么我建议您将每个$Using:变量分配给scriptblock内的局部变量:

$block = {
    $x = $Using:x
    $y = $Using:y
}

我在博客上写了关于how $Using: is implemented的更详细解释,说明如何在DSC脚本资源中使用它。