我尝试运行报告,以获取在AD中禁用但仍在Office 365中分配许可证的所有用户。 我在各个站点上找到了几个脚本,如果只是在PowerShell控制台中运行它们就可以工作,但是当我尝试导出到CSV时,它会丢失许可证分配信息。
我目前使用的脚本是:
Get-MsolUser -All | where {$_.isLicensed -eq $true -and $_.BlockCredential -eq $true} | select userprincipalname,islicensed,Licenses,UsageLocation
这有效,并显示以下
UserPrincipalName IsLicensed Licence UsageLocation
----------------- ---------- -------- ------------ -
joe.bloggs@domain.com是的 {tennent:ENTERPRISEPACK}美国
但是,我补充的那一刻:
| Export-Csv -Path C:\LicenseReport.csv
报告更改为:
UserPrincipalName IsLicensed Licence UsageLocation
joe.bloggs@domain.com TRUE System.Collections.Generic.List`1 [Microsoft.Online.Administration.UserLicense] US
我已经为许可证尝试了许多其他选择属性,例如
但没有工作。如何使用许可证详细信息将报告导出?
答案 0 :(得分:0)
试试这个:
Get-MsolUser -All | where {$_.isLicensed -eq $true -and $_.BlockCredential -eq $true} |
select userprincipalname,islicensed,@{N="Licenses";E={$_.Licenses.AccountSkuId}},UsageLocation
并且如果您只有一个许可证,但如果您有更多许可证,则需要使用逗号连接它们,因此它将是与csv导出兼容的字符串,例如:
改变这个:
@{N="Licenses";E={$_.Licenses.AccountSkuId}}
To This:
@{N="Licenses";E={$_.Licenses.AccountSkuId -join ','}}
答案 1 :(得分:0)
这是我使用的命令&它有效:
Get-MsolUser -All | ?{$_.isLicensed-eq "TRUE"} | Select DisplayName, SignInName, @{n="LicensesType";e={$_.Licenses.AccountSKUid}} | Export-Csv -Path C:\output.csv -NoTypeInformation
请注意,MSOnline模块已不再开发。你应该考虑转移到AzureAD PowerShell module。 以下是其语法:
Get-AzureADUser -All 1 | ?{($_.AssignedLicenses | ?{$_.SkuId -eq $license.SkuId})} | SELECT DisplayName, UserPrincipalName, @{l="License";e={$license.SkuPartNumber}}