在 Session 上声明变量

declare variable over Sessions

我启动了一个 PowerShell 脚本,该脚本在另一台计算机上使用 Invoke-Command 调用一个函数。我想声明一个在所有这些会话中都可用的变量。

$var = "global"

function do-function{
    $var = "function"
    return $var
}

$var
invoke-command -ComputerName NameOfComputer -scriptblock  ${function:do-function}
$var

输出:

global
function
global

我的目标是:

global
function
function

您必须将 Invoke-Command cmdlet 中的 return 值分配给变量:

$var = "global"

function do-function{
    $var = "function"
    return $var
}

$var
$var = invoke-command -ComputerName NameOfComputer -scriptblock  ${function:do-function}
$var

此外,scriptblock可以定义如下:

$myScriptBlock = {
    # ....
}

invoke-command -ComputerName NameOfComputer -scriptblock $myScriptBlock