使用两个等长数组执行数学运算

wet*_*tin 2 powershell foreach enumeration

我正在做的事情非常简单,以至于我都在努力寻找答案。我正在尝试从彼此中减去两个相等长度的数组

$free_array = get-wmiobject -class win32_logicaldisk | select -ExpandProperty freespace
$size_array = get-wmiobject -class win32_logicaldisk | select -ExpandProperty size

ForEach ($size in $size_array)
  {
    Write-Host Statistic: $size - $freespace
  }

Run Code Online (Sandbox Code Playgroud)

Don*_*ank 6

我认为 PowerShell 没有内置函数来同时映射多个数组,因此您可以使用范围运算符,然后根据需要对两个数组进行索引:

foreach ($Index in (0..($free_array.Count - 1))) {
    Write-Host Statistic: ($size_array[$Index] - $free_array[$Index])
}
Run Code Online (Sandbox Code Playgroud)

但是,您的任务也可以这样完成,我认为这会更具可读性:

$LogicalDisks = Get-CimInstance -ClassName Win32_LogicalDisk

foreach ($LogicalDisk in $LogicalDisks) {
    Write-Host Statistic: ($LogicalDisk.Size - $LogicalDisk.FreeSpace)
}
Run Code Online (Sandbox Code Playgroud)

  • 赞成“但是......”部分。 (2认同)