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

PowerShell中如何通过数组引用修改对应变量值?

问题分析

原代码里,$array = @($a, $b, $c) 是把变量值的副本存入数组,而非变量本身的引用。foreach循环里修改的$var只是数组中的临时元素,和原变量$a、$b、$c完全无关,所以最终输出还是0 : 0 : 0。

解决方案:使用[ref]传递引用

要直接修改原变量,需要把变量的引用存入数组,通过[ref]类型实现。修改后的代码如下:

$a = 0
$b = 0
$c = 0

# 存入变量的引用,而非值的副本
$array = @([ref]$a, [ref]$b, [ref]$c)

foreach ($varRef in $array) {
    # 通过Value属性修改原变量的值
    $varRef.Value = 3
}

Write-Host "$a : $b : $c" 

这段代码运行后会输出3 : 3 : 3,完全符合需求。

关键说明
  • [ref]$var会创建一个指向原变量的引用对象,数组里存储的不再是具体数值,而是变量的内存地址引用。
  • 在循环中,必须通过$varRef.Value来访问或修改原变量的值,这是[ref]类型对象的专属属性,用来操作背后指向的原变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:00:53