比较Powershell中格式表输出的列

ere*_*dn_ 1 powershell office365

我已经在这一段时间里摸不着头脑了.

我正在编译脚本以在Powershell中创建新的Office365用户帐户.我想添加一个Tennant拥有的许可证数量的检查,并提示管理员进入Web门户,以便在Tennant没有备用许可证时添加更多许可证

我想选择EXCHANGESTANDARD并将ActiveUnits与ConsumedUnits进行比较,以确保ActiveUnits比ConsumedUnits更多

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

AccountSkuId                   ActiveUnits WarningUnits ConsumedUnits
------------                   ----------- ------------ -------------
Company365:EXCHANGESTANDARD    274         0            274 
Run Code Online (Sandbox Code Playgroud)

我现在如何设置将ActiveUnits列与ConsumedUnits进行比较?

Ans*_*ers 5

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

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

Get-MsolAccountSku | Where-Object {
  $_.AccountSkuId -eq "Company365:EXCHANGESTANDARD" -and
  $_.ActiveUnits -gt $_.ConsumedUnits
} | ...
Run Code Online (Sandbox Code Playgroud)

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

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