【问题标题】:PowerShell Set-MSolUserLicensePowerShell 设置-MSolUserLicense
【发布时间】:2018-06-29 04:30:41
【问题描述】:

我正在尝试从我们的 Office365 中取消分配大量用户许可证。

我将所有用户的 UserPrincipalName 保存在一个 CSV 文件中,如下所示:

Name
user.name@domain.com
user.name2@domain.com
"
"

这就是我试图做的:

$csv1 = import-csv | select -expandProperty name

Set-MsolUserLicense -UserPrincipalName $csv1 -RemoveLicense "domain:STANDARDPACK"

当我在 CSV 文件中只有一个用户时,它可以工作! 但是当我尝试将更多用户添加到确切的文件和完全相同的列表中时,命令失败并给我这个错误:

Set-MsolUserLicense : Unable to assign this license because it is invalid. Use the
Get-MsolAccountSku cmdlet to retrieve a list of valid licenses.

我仔细检查并确保它确实是正确的许可证 (domain:StandartPack)

我还能做什么?我怎样才能让它发挥作用?

【问题讨论】:

    标签: powershell office365 exchange-server


    【解决方案1】:

    您需要一次迭代 csv 中的每一行,此时您同时处理所有这些行,所以试试这个:

    $csv1 = import-csv | select -expandProperty name
    foreach ($upn in $csv1)
    {
    Set-MsolUserLicense -UserPrincipalName $upn.Name -RemoveLicense "domain:STANDARDPACK"
    }
    

    **编辑:

    也试试下面的方法(必要时更新)

    $csv1 = import-csv | select -expandProperty name
    foreach ($upn in $csv1)
    {
    $License = Get-MsolUser -UserPrincipalName $upn.Name | % {$_.Licenses.AccountSkuId}
        if ($License) {
        Set-MsolUserLicense -UserPrincipalName $upn.Name -RemoveLicense $License
        }
    }
    

    【讨论】:

    • 嗨,我试过了,但我仍然收到此错误:Set-MsolUserLicense:无法分配此许可证,因为它无效。使用 Get-MsolAccountSku cmdlet 检索有效许可证的列表。再次,我确保 licesne 是 100% 是正确的
    • 我做了并确保它是正确的许可证。当我为一位用户执行此操作时,它工作得很好。但是当我尝试使用 CSV 时它失败了。
    • foreach ($upn in $csv1) {Get-MsolUser -UserPrincipalName $upn.Name | Select UserPrincipalName } 你得到所有的结果/用户了吗?有什么错误吗?
    • 当我运行它时,我设法获取所有用户及其许可证状态。现在,当我尝试将脚本块更改为此: Set-MsolUserLicense -UserPrincipalName $upn.Name -RemoveLicenses "domain:ENTERPRISEPACK" 我收到相同的错误:无法分配此许可证,因为它无效。使用 Get-MsolAccountSku cmdlet 检索有效许可证列表
    【解决方案2】:

    您将需要遍历所有分配的许可证并找到您要删除的许可证。

    foreach($UPN in $csv1){
      $user = Get-MsolUser -UserPrincipalName $UPN
      $license_Count = ($user.licenses).count
    
      for($e=0;$e -le $license_Count - 1;$e++){
        if($user.Licenses[$e].AccountSkuID -eq "domain:STANDARDPACK"){
          Set-MsolUserLicense -UserPrincipalName $user -RemoveLicenses "domain:STANDARDPACK"
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多