2016-06-29 57 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 

单从会话的脚本块返回变量,无论是与Write-Outputreturn或只使用变量另一个命令,因为我已经证明。 Invoke-Command的返回值将是脚本块写入管道的任何值。