找出 o365 用户的直接分配许可证
Find out the direct assigned licenses of an o365 user
我正在尝试编写一个 powershell 脚本,我需要在其中删除用户的许可证。但是,如果许可证是直接分配的,而不是通过某个 Azure 组 ,我只需要 删除它。由于基于组的策略,我不必触摸显示的许可证。
在测试时,我注意到对于 msoluser 的许可 属性,也存在我可以探索的 GroupsAssingningLicense,但它甚至对直接分配许可也有价值。
有什么方法可以确定许可证是直接分配的还是由于用户属于某个组而显示的?
你的方向是正确的。
我们真的应该根据 GroupsAssingningLicense
过滤。
对于直接分配的许可证,GroupsAssingningLicense
的值是 用户 的对象 ID。
但对于继承分配的许可证,GroupsAssingningLicense
的值是 组 的对象 ID。
供您参考的示例:
Connect-MsolService
$username = ""
$user = Get-MsolUser -UserPrincipalName $username
foreach ($license in $user.Licenses){
if($license.GroupsAssigningLicense[0].ToString() -eq $user.ObjectId){
Write-Host $license.AccountSkuId
Set-MsolUserLicense -UserPrincipalName $user.UserPrincipalName -RemoveLicenses $license.AccountSkuId
}
}
我正在尝试编写一个 powershell 脚本,我需要在其中删除用户的许可证。但是,如果许可证是直接分配的,而不是通过某个 Azure 组 ,我只需要 删除它。由于基于组的策略,我不必触摸显示的许可证。
在测试时,我注意到对于 msoluser 的许可 属性,也存在我可以探索的 GroupsAssingningLicense,但它甚至对直接分配许可也有价值。
有什么方法可以确定许可证是直接分配的还是由于用户属于某个组而显示的?
你的方向是正确的。
我们真的应该根据 GroupsAssingningLicense
过滤。
对于直接分配的许可证,GroupsAssingningLicense
的值是 用户 的对象 ID。
但对于继承分配的许可证,GroupsAssingningLicense
的值是 组 的对象 ID。
供您参考的示例:
Connect-MsolService
$username = ""
$user = Get-MsolUser -UserPrincipalName $username
foreach ($license in $user.Licenses){
if($license.GroupsAssigningLicense[0].ToString() -eq $user.ObjectId){
Write-Host $license.AccountSkuId
Set-MsolUserLicense -UserPrincipalName $user.UserPrincipalName -RemoveLicenses $license.AccountSkuId
}
}