【发布时间】:2021-01-10 06:23:33
【问题描述】:
大家晚上好,
对于 Powershell 来说还是很新的东西,但我一直在尝试将一些脚本组合在一起,以使我们需要从客户的 Office 365 租户中提取的许多信息更容易生成一些报告。
脚本已经完成了我需要的工作(从租户那里获取订阅,从我的 CSV 获取订阅的友好名称,然后写入控制台),但是我的问题是关于格式:我想在表格中格式化此输出,列标题为 Subscriptions、Active、Suspended、Assigned。
$sku = Get-MsolAccountSku | select-object skupartnumber,ActiveUnits,suspendedUnits,ConsumedUnits | sort-object -property skupartnumber
$skudata = import-csv -Header friendlyname,skupartnumber "C:\PShell\SKUs.csv" | where-object {$sku.skupartnumber -eq $_.skupartnumber} | sort-object -property skupartnumber
$skudata | foreach-object {$n = 0}{write-host $skudata.friendlyname[$n], $sku.ActiveUnits[$n], $sku.SuspendedUnits[$n], $sku.ConsumedUnits[$n]; $n = $n + 1}
## Output:
POWER BI (FREE) 1000000 0 1
MICROSOFT TEAMS EXPLORATORY 100 0 6
这是脚本和输出,我现在正在使用 write-host,因为这会以我们想要的相同方式格式化数据,我可以轻松地将其从控制台复制到我们的票证中。但是,当我使用 write-output 时,它会将每个单元格放在自己的行中,我似乎无法弄清楚如何将其输入到 format-table 中。
$skudata | foreach-object {$n = 0}{write-output $skudata.friendlyname[$n], $sku.ActiveUnits[$n], $sku.SuspendedUnits[$n], $sku.ConsumedUnits[$n]; $n = $n + 1}
# Output:
POWER BI (FREE)
1000000
0
1
MICROSOFT TEAMS EXPLORATORY
100
0
6
我已经能够使用下面的哈希表和简单的脚本获得我需要的一切,唯一的问题是它无法提取通用订阅名称,而微软的 skupartnumber 标识符是最好的选择,但并不总是非常描述性的。我敢肯定,我只是缺少一些非常简单的解决方案,但是如果有人能指出我尝试过的任何一种解决方案的正确方向,我将不胜感激!
$subs = @{Label="Subscription"; Expression={$_.skupartnumber}; Alignment = "right";}
$active = @{Label="Active"; Expression={$_.ActiveUnits}; Alignment = "right"}
$assigned = @{Label="Assigned"; Expression={$_.ConsumedUnits}; Alignment = "right"}
$suspended = @{Label="Suspended"; Expression={$_.SuspendedUnits}; Alignment = "right"}
Get-MsolAccountSku | Format-Table $subs, $active, $suspended, $assigned -autosize
# Output:
Subscription Active Suspended Assigned
------------ ------ --------- --------
POWER_BI_STANDARD 1000000 0 1
TEAMS_EXPLORATORY 100 0 6
【问题讨论】:
标签: powershell office365