PowerShell获取残疾AD用户仍然获得O365许可

时间:2017-11-21 14:05:52

标签: powershell active-directory office365

我尝试运行报告,以获取在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

我已经为许可证尝试了许多其他选择属性,例如

  • $ _。licenses.accountskuid
  • @ {N ="许可
  • 输入"; e = {$ _.Licensess.AccountSKUid}} $($ license.AccountSKUid)

但没有工作。如何使用许可证详细信息将报告导出?

2 个答案:

答案 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}}