2016-06-29 1 views
2

У меня есть сценарий PowerShell, который создает новый сеанс PowerShell. Мне нужно вернуть одну из переменных из множества переменных, созданных в этом сеансе, в локальный/вызывающий сеанс. Вот мой PowerShell скрипт:Как вернуть переменную из удаленного сеанса PowerShell на локальный сеанс PowerShell

param 
(
[string]$user, 
[string]$password 
) 

$secure_password = ConvertTo-SecureString $password -AsPlainText -Force 
$cred = New-Object System.Management.Automation.PSCredential $user, $secure_password 

$new_session = New-PSSession -Credential $cred 

$script = { 
$var1 = 0 
$var2 = a 
} 

Invoke-Command -Session $new_session -ScriptBlock $script 

Write-Host ($var2) 

Когда сценарий выполняет Write-Host ($var2), он не печатается значение $ var2. Как я могу вернуть $ var2 на локальный сеанс?

ответ

2
param 
(
[string]$user, 
[string]$password 
) 

$secure_password = ConvertTo-SecureString $password -AsPlainText -Force 
$cred = New-Object System.Management.Automation.PSCredential $user, $secure_password 

$new_session = New-PSSession -Credential $cred 

$script = { 
    $var1 = 0 
    $var2 = a 
    $var2 
} 

$varFromSession = Invoke-Command -Session $new_session -ScriptBlock $script 

Write-Host $varFromSession 

Просто вернуть переменную из ScriptBlock дня сессии, либо с Write-Output или return или просто использовать переменную в другой команде, как я продемонстрировал. Возвращаемое значение Invoke-Command будет тем, что написал сценарий в конвейере.

Смежные вопросы