【问题标题】:Find out the direct assigned licenses of an o365 user找出 o365 用户的直接分配许可证
【发布时间】:2020-07-23 10:44:46
【问题描述】:

我正在尝试编写一个 powershell 脚本,我需要在其中删除用户的许可证。但是,如果是直接分配而不是通过某个 Azure 组分配,我只需要删除许可证。由于基于组的策略,我不必触摸显示的许可证。

在测试时,我注意到对于 msoluser 的 licenses 属性,还存在我可以探索的 GroupsAssingningLicense,但它甚至对于直接分配许可证也包含价值。

我有没有办法确定许可证是直接分配的还是由于用户属于某个组而显示的?

【问题讨论】:

    标签: powershell azure-active-directory office365


    【解决方案1】:

    你的方向是正确的。

    我们确实应该根据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
        }
    }
    

    【讨论】:

    • 非常感谢艾伦,我希望我早点找到了这个,我不必拉一整晚。真的很感激这个
    • 我确实有一个疑问,对于一些用户,我确实看到 GroupsAssingningLicense 对象是空的,知道为什么会这样吗?
    • @KaranParikh 我没有从我身边看到这样的场景。您能否提供您在 Powershell 和 Azure 门户中看到的任何屏幕截图?
    • 我希望有什么方法可以分享截图,imgur 被我屏蔽了。我将尝试分享我在 Powershell $UPN = "<UPN_OF_User>" $msolUser = Get-MsolUser -UserPrincipalName $UPN $msolUser.Licenses | Select AccountSKUId, GroupsAssigningLicense | fl 上执行的代码,我收到的输出是 AccountSkuId : tenant:ENTERPRISEPACK GroupsAssigningLicense : {} 许可证 SKU 是正确的,但我想知道为什么 groupassigninglicense 是空的,在微软门户上也是如此,我可以查看相同的许可证。
    • @KaranParikh 抱歉,我无法重现此问题。您可以深入了解哪种许可证会出现这种情况。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多