2016-06-09 4 views
1

Я запускаю сценарий PowerShell, который вызывает функцию с Invoke-Command на другом компьютере. Я хочу объявить переменную, доступную во всех этих сеансах.declare variable over Sessions

$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 

ответ

0

Вы должны присвоить возвращаемое значение из Invoke-Command командлета переменной:

$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