比较Powershell中格式表输出的列

时间:2015-04-28 09:45:27

标签: 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 

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

1 个答案:

答案 0 :(得分:5)

删除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
  }
} | ...