比较 Powershell 中 Format-Table 输出的列

Comparing the Columns of a Format-Table Output in Powershell

我已经为这个问题绞尽脑汁了一段时间。

我正在编译脚本以在 Powershell 中创建一个新的 Office365 用户帐户。我想添加一个检查租户拥有的许可证数量,如果租户没有备用许可证,则提示管理员转到 Web 门户添加更多许可证

我想 select EXCHANGESTANDARD 并将 ActiveUnits 与 ConsumedUnits 进行比较,以确保 ActiveUnits 多于 ConsumedUnits

Get-MsolAccountSku | Where-Object {$_.AccountSkuId -eq "Company365:EXCHANGESTANDARD" } | ft -AutoSize

AccountSkuId                   ActiveUnits WarningUnits ConsumedUnits
------------                   ----------- ------------ -------------
Company365:EXCHANGESTANDARD    274         0            274 

我现在如何着手比较列 ActiveUnits 和 ConsumedUnits?

删除 Format-Table 语句。 Format-* 语句用于显示数据,因此在需要进一步处理时不应使用它们。

如果要过滤 ActiveUnits 大于 ConsumedUnits 的项目,您可以将检查添加到 Where-Object 条件:

Get-MsolAccountSku | Where-Object {
  $_.AccountSkuId -eq "Company365:EXCHANGESTANDARD" -and
  $_.ActiveUnits -gt $_.ConsumedUnits
} | ...

如果您需要根据 ActiveUnits 是否大于 ConsumedUnits 采取行动,您可以在循环中使用条件:

Get-MsolAccountSku | Where-Object {
  $_.AccountSkuId -eq "Company365:EXCHANGESTANDARD"
} | ForEach-Object {
  if ($_.ActiveUnits -gt $_.ConsumedUnits) {
    # do some
  } else {
    # do other
  }
} | ...