You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不退出PowerShell远程会话的情况下传递变量

在已建立的PowerShell远程会话中传递变量的方法

当然可以实现,不用退出已建立的远程会话就能传递本地变量$var1的值到远程端,下面是几种实用的实现方式:

方式一:进入交互式会话前预先注入变量

在调用Enter-PSSession之前,用Invoke-Command在同一个远程会话中定义好变量,进入交互式会话后就能直接使用:

$var1 = 'some text'

$session = New-PSSession -ComputerName <Server> 
Invoke-Command -FilePath $profile -Session $session
# 将本地变量$var1注入远程会话的全局变量中
Invoke-Command -Session $session -ScriptBlock { $global:remoteVar1 = $using:var1 }
Enter-PSSession -Session $session
# 直接调用变量即可获取值
$remoteVar1

方式二:利用会话私有数据传递

PowerShell远程会话对象自带私有数据存储功能,先把本地变量存入会话对象,进入交互式会话后再取出:

$var1 = 'some text'

$session = New-PSSession -ComputerName <Server> 
Invoke-Command -FilePath $profile -Session $session
# 将本地变量存入会话的私有数据字典
$session.PrivateData['LocalVar1'] = $var1
Enter-PSSession -Session $session
# 从会话私有数据中取出变量值
$var1 = $PSSession.PrivateData['LocalVar1']
# 验证变量
$var1

方式三:进入交互式会话后动态传递

如果已经进入了远程会话,不用退出,直接在交互式环境中调用Invoke-Command针对当前会话传递变量:

# 假设已进入远程会话
Enter-PSSession -Session $session
# 在交互式会话中执行命令,传递本地$var1
Invoke-Command -Session $PSSession -ScriptBlock { $global:var1 = $using:var1 }
# 现在远程会话中可直接使用$var1
$var1

注意:$using:是PowerShell 3.0及以上版本支持的语法,用于在远程脚本块中引用本地变量;若使用更低版本,可通过-ArgumentList参数传递变量,示例:

Invoke-Command -Session $session -ScriptBlock { $global:remoteVar1 = $args[0] } -ArgumentList $var1

内容的提问来源于stack exchange,提问作者Oleg0341

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 04:57:41