在Sessions上声明变量

时间:2016-06-09 07:36:39

标签: powershell variables scopes

我启动一个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

1 个答案:

答案 0 :(得分:0)

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

$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