【问题标题】:Accessing remote (Invoke-Command) array variable in local session在本地会话中访问远程(调用命令)数组变量
【发布时间】:2019-10-30 22:23:58
【问题描述】:

我正在尝试访问调用命令之外的数组变量。我尝试了下面的代码,我无法从本地会话访问远程数组变量。

$serverlist = @("server1", "server2")

foreach ($server in $serverlist) {
    #Write-Host $computer

    $vinodh = Invoke-Command -ComputerName $server -ScriptBlock {
        $testVar = @("Stack", "over", "flow")
    }
}
foreach ($vars in $testVar) {
    Write-Host $vars # Unable to get the values as stack,over, flow
}

实际结果:无法获取值。

我希望输出为

堆 超过 流动

【问题讨论】:

    标签: powershell invoke-command


    【解决方案1】:

    在远程会话中设置的变量未填充到本地 powershell 会话 (About Scopes)。您可以 return 调用会话中的值以供以后使用。

    $ReturnValues = Invoke-Command -ComputerName $Server -ScriptBlock {
        $testVar=@("Stack","over","flow")
        return  $testVar #return data
    }
    
    foreach ($ReturnValue in $ReturnValues)
    {
        $ReturnValue
    }
    

    【讨论】:

    • 请注意,不需要使用return 关键字。默认情况下,PowerShell 返回所有未捕获的常规输出。
    • 感谢您的回复,我们可以返回多个数组变量吗?
    • 我们可以返回多个数组变量,然后我需要使用 for 循环来迭代它们中的每一个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多