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

如何通过动态名称调用PowerShell中已创建的变量?

解决PowerShell动态变量调用问题

首先,你之前尝试的$$VarName写法在PowerShell里不生效,要调用动态命名的变量,可采用以下两种方法:

方法1:用Get-Variable获取变量值

当生成变量名$VarName后,直接通过Get-Variable指定变量名并仅返回值:

# 假设$obj.context为"paint",$VarName即为"list_of_paint"
$VarName = "list_of_" + $obj.context
# 获取对应变量的值
$targetValue = Get-Variable -Name $VarName -ValueOnly

方法2:通过作用域变量集合访问

也可以直接从当前执行上下文的变量集合中取值:

$targetValue = $ExecutionContext.SessionState.PSVariable.GetValue($VarName)

修正你原有的代码

你的代码存在两处问题:一是ForEach-Object语法错误,二是添加字符串时$未转义,修正后代码如下:

[System.Collections.ArrayList]$ndf = @()
$test = "2"
$VarName = "list_of_" + $obj.context
# 创建动态变量
New-Variable -Name $VarName -Value $test -Force
# 将带$的变量名字符串添加到集合(用`转义$避免解析)
$ndf.Add("`$$VarName") | Out-Null

更推荐的替代方案:用哈希表代替动态变量

动态变量容易污染命名空间,管理不便,用哈希表存储动态键值对更可控:

# 初始化哈希表
$appData = @{}
# 给对应键赋值
$appData["list_of_$($obj.context)"] = $test
# 调用时直接通过键取值
$targetValue = $appData["list_of_$($obj.context)"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:40:28