0

我正在尝试从Get-MsolAccountSku命令中获取可用的备用许可证数量。

这是代码(下面的输出)

$Licenses = Get-MsolAccountSku
$spare = Foreach ($License in $licenses)
{
  ($License.ActiveUnits - $License.ConsumedUnits)   
}

Get-MsolAccountSku | Select-Object -Property AccountSkuId,ActiveUnits,ConsumedUnits,@{L=’SpareLicenses’;E={$spare}}

ForEach我想在输出右侧添加一列,以列出循环中减法可用的许可证数量。

ActiveUnits ConsumedUnits
----------- -------------
         30            26
       1601             1
         30            29
         25             0
          5             3
          1             0
      12550         12465
    1000000         12461
      12550         12466
      12555         12468
         31            19
      12550         12464
4

2 回答 2

1

$spare不需要您的对象,只需更新 Select 以进行计算...

Get-MsolAccountSku | 
Select-Object -Property AccountSkuId,ActiveUnits,ConsumedUnits,
@{L=’SpareLicenses’;E={$_.ActiveUnits - $_.ConsumedUnits}}
于 2021-12-19T15:44:46.517 回答
1

关于计算属性

计算属性由包含指定新属性名称的键值对、计算值的表达式和可选格式信息的哈希表定义。

  • expression-用于计算新属性值的脚本块。

按照您的代码,您应该更改foreach脚本块的循环:

$Licenses = Get-MsolAccountSku
$spare = { $_.ActiveUnits - $_.ConsumedUnits }

# $_ - References to each object being passed through the pipeline
# See about Automatic Variables for more information

Get-MsolAccountSku |
Select-Object -Property AccountSkuId,ActiveUnits,ConsumedUnits,@{
    Name = 'SpareLicenses'
    Expression = $spare
}
于 2021-12-19T15:46:17.733 回答