PowerShell如何通过动态拼接变量名获取对应变量的实际值
问题解决方法
你要实现从动态变量名获取变量值,有两种直接的实现方式:
方案1:直接复用你已经生成的$variables数组(更推荐)
你在遍历生成row$i变量的时候,已经把所有行的键值对存到了$variables数组里,只需要根据用户输入的行号直接取值即可,比调用独立变量更安全高效:
$LineaScelta = Read-Host # 直接从数组中取值,注意要转成整型匹配数组索引 $IP = $variables[[int]$LineaScelta].Value
方案2:使用Get-Variable cmdlet获取动态变量的值
如果你要直接读取你创建的row$i独立变量的实际值,用Get-Variable命令指定变量名获取对象,再取Value属性即可:
$LineaScelta = Read-Host $rownumber = "row" + $LineaScelta # 获取对应变量的实际值,加-ErrorAction避免输入无效行号时报错 $IP = (Get-Variable -Name $rownumber -ErrorAction SilentlyContinue).Value
额外优化说明
- 你当前的脚本里完全不需要单独创建
row$i、linea$ii这类独立变量,直接用$variables、$variables2数组存值完全可以满足需求,还能减少全局变量污染,后续维护也更简单。 - 如果需要配置第二个DNS,只需要把
Set-DnsClientServerAddress的-ServerAddresses参数换成数组即可,示例:
# 多个DNS地址用逗号分隔即可 $adapter | Set-DnsClientServerAddress -ServerAddresses "172.16.16.1","172.16.16.2"
内容的提问来源于stack exchange,提问作者Kitsu
相关产品推荐
相关产品推荐

