【问题标题】:Powershell For Each Variable By NumberPowershell 按数字显示每个变量
【发布时间】:2019-11-06 01:47:19
【问题描述】:

我有以下变量:

$testvar_1 = 1, 100
$testvar_2 = 1, 20
$testvar_3 = 0, 260
$testvar_4 = 1, 10

如何创建一个循环遍历每个变量数组的 for 循环?

* 当您不知道 $testvar_n 变量的总数并且它不断变化时。 *

类似For Each $testvar_n do { $testvar_n[1] = $testvar_n[1] + 10 }

抱歉,对 powershell 很陌生。

编辑:

也许可以像下面这样工作?

get-variable testvar* | ForEach-Object -Process {$_[1]+10}

【问题讨论】:

  • 也许备份几个步骤会有用?是什么给了你那些迷你阵列?可以修改该过程以提供一个数组吗?
  • 也许我可以转换它,但我正在从外部来源接收这样的数据。我正在努力让它发挥作用,但一直坚持这一点。
  • 啊!好吧,看起来AdminOfThings 为您提供了解决方案。祝你好运! [咧嘴]
  • 非常感谢您的帮助,谢谢!!

标签: powershell shell loops foreach command-line


【解决方案1】:

如果您需要实际更新现有变量,您可以执行以下操作。

foreach ($var in (Get-Variable -Name testvar_[0-9]* -ValueOnly)) {
    $var[1] += 10
}

注意: [0-9] 是任何单个数字的通配符范围运算符。通配符* 匹配零个或多个字符,例如可以匹配testvar_1abc。如有必要,您可以使用Where-Object 条件进一步防止这种情况发生。请参阅下面的进一步过滤。

$vars = Get-Variable -Name testvar_[0-9]* | Where Name -match '^testvar_\d+$'
foreach ($var in $vars) {
        $var.Value[1] += 10
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 2020-03-10
    相关资源
    最近更新 更多