You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用New-MsolUser创建用户时遇未知错误,求解决方案

解决New-MsolUser创建用户时的OperationNotAllowedException错误

问题重现

使用以下MSOnline PowerShell脚本创建用户:

$Uppn = "XXX@ms.XX.XX"
$UserID = "00000"
$DisName = "XXX XXXX "
$FirstNm = "XXXX "
$LastNm = "XXXX "
$AltEmail = "xxxxxxx@xx.xx.xx.x"
$Mobilenum = "+11111111111"
New-MsolUser -UserPrincipalName $Uppn -ImmutableId $UserID -DisplayName $DisName -FirstName $FirstNm -LastName $LastNm -AlternateEmailAddresses $AltEmail -LicenseAssignment "aaa:STANDARDWOFFPACK_STUDENT" -UsageLocation "LK" -MobilePhone $Mobilenum

执行后触发错误:

New-MsolUser : Unknown error occurred.
At line:1 char:1
+ New-MsolUser -UserPrincipalName $Uppn -ImmutableId $UserID -DisplayNa ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [New-MsolUser], MicrosoftOnlineException
+ FullyQualifiedErrorId : Microsoft.Online.Administration.Automation.OperationNotAllowedException,Microsoft.Online.Administration.Automation.NewUser

解决方案

1. 拆分许可证分配步骤

部分场景下,创建用户时直接分配许可证会触发验证异常,可拆分操作:

  • 先创建不带许可证的用户:
    New-MsolUser -UserPrincipalName $Uppn -ImmutableId $UserID -DisplayName $DisName -FirstName $FirstNm -LastName $LastNm -AlternateEmailAddresses $AltEmail -UsageLocation "LK" -MobilePhone $Mobilenum
    
  • 用户创建成功后,单独分配许可证:
    Set-MsolUserLicense -UserPrincipalName $Uppn -AddLicenses "aaa:STANDARDWOFFPACK_STUDENT"
    
  • 同时用Get-MsolAccountSku确认该许可证有剩余配额,且UsageLocation是有效的ISO 3166-1 alpha-2代码(LK为斯里兰卡,符合要求)。

2. 修正ImmutableId格式

ImmutableId用于联合身份场景,必须是Base64编码字符串,不能是纯数字:

  • 如果是非联合身份用户,直接移除-ImmutableId参数重试。
  • 如果需要联合身份,将用户ID转换为Base64格式:
    $UserID = "00000"
    $ImmutableId = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($UserID))
    

3. 清理用户属性的无效内容

  • 移除属性值末尾的空格:示例中$DisName、$FirstNm、$LastNm都有 trailing space,修改为:
    $DisName = "XXX XXXX"
    $FirstNm = "XXXX"
    $LastNm = "XXXX"
    
  • 确保AlternateEmailAddresses是标准邮箱格式,示例中的xxxxxxx@xx.xx.xx.x不符合规则,需调整为合法邮箱。

4. 验证账号权限与租户限制

  • 确认执行脚本的账号拥有全局管理员或用户管理员角色,受限角色无法创建用户。
  • 检查租户是否设置了用户创建数量限制,或禁止PowerShell创建用户的策略。

5. 改用Microsoft Graph PowerShell重试

MSOnline模块已逐步淘汰,推荐使用Microsoft Graph PowerShell:

# 安装模块(首次使用)
Install-Module Microsoft.Graph.Users -Force
# 授权连接
Connect-MgGraph -Scopes "User.ReadWrite.All","Directory.ReadWrite.All"
# 创建用户
$params = @{
  AccountEnabled = $true
  DisplayName = "XXX XXXX"
  MailNickname = "XXX"
  UserPrincipalName = "XXX@ms.XX.XX"
  PasswordProfile = @{
    ForceChangePasswordNextSignIn = $false
    Password = "TempPass123!" # 需符合租户密码策略
  }
  GivenName = "XXXX"
  Surname = "XXXX"
  AlternateEmailAddresses = @("xxxxxxx@xx.xx.xx")
  MobilePhone = "+11111111111"
  UsageLocation = "LK"
}
New-MgUser @params
# 分配许可证
$skuId = (Get-MgSubscribedSku | Where-Object SkuPartNumber -eq "STANDARDWOFFPACK_STUDENT").SkuId
Set-MgUserLicense -UserId "XXX@ms.XX.XX" -AddLicenses @(@{SkuId = $skuId}) -RemoveLicenses @()

内容的提问来源于stack exchange,提问作者Tuwan J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 11:52:28