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

如何修改PowerShell脚本实现从CSV批量分配指定License?

批量通过CSV处理Azure AD用户许可证的PowerShell脚本修改方案

操作步骤

  1. 准备CSV文件:先创建一个CSV(比如命名为user-list.csv),用UPN作为列名存储用户的用户主体名称,示例格式如下:
UPN
miguel.santiago@nice.ch
jane.doe@nice.ch
john.smith@nice.ch
  1. 脚本修改说明:把原脚本中针对单个用户的逻辑套入foreach循环即可,同时将固定的许可证配置代码移到循环外(避免重复创建对象浪费资源)。注意原脚本实际是移除许可证,如果你的需求是分配,需要把RemoveLicenses替换为AddLicenses。

修改后的完整脚本

# 读取CSV中的用户列表
$userList = Import-Csv -Path "C:\Your\Path\user-list.csv"

# 提前配置许可证信息(SKU固定,只需初始化一次)
$targetSkuId = "3b555118-da6a-4418-894f-7df1e2096870"
$licenseObj = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$licenseObj.SkuId = $targetSkuId

$licenseAssignment = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
# 需求为分配许可证时用AddLicenses,移除则保留RemoveLicenses
$licenseAssignment.AddLicenses = $licenseObj
# $licenseAssignment.RemoveLicenses = $targetSkuId

# 遍历每个用户执行操作
foreach ($userEntry in $userList) {
    try {
        # 获取Azure AD用户对象
        $adUser = Get-AzureADUser -ObjectId $userEntry.UPN -ErrorAction Stop
        
        # 执行许可证操作
        Set-AzureADUserLicense -ObjectId $adUser.ObjectId -AssignedLicenses $licenseAssignment -ErrorAction Stop
        
        Write-Host "处理成功:$($userEntry.UPN)" -ForegroundColor Green
    }
    catch {
        Write-Host "处理失败 $($userEntry.UPN):$_" -ForegroundColor Red
    }
}

核心修改点

  • 用Import-Csv读取批量用户列表,替代单个UPN变量
  • 将许可证对象初始化代码移到循环外,提升执行效率
  • 用foreach遍历CSV中的每一条用户记录
  • 增加try-catch块捕获并输出错误(比如用户不存在、许可证操作失败等场景)
  • 明确区分分配/移除许可证的配置项,适配不同需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:22:14