从AD对象提取Base64字符串的PowerShell脚本开发需求
完善后的PowerShell脚本实现
以下是满足所有需求的完整脚本,基于你的单用户版本扩展优化:
# 导入ActiveDirectory模块 Import-Module ActiveDirectory # 获取用户输入的目标OU的LDAP路径(示例格式:OU=Users,DC=contoso,DC=com) $TargetOU = Read-Host "请输入目标OU的LDAP路径" # 查询指定OU下所有用户,批量处理并输出结果 Get-ADUser -Filter * -SearchBase $TargetOU -Properties Name, SamAccountName, ObjectGUID | Select-Object Name, SamAccountName, ObjectGUID, @{Name='ImmutableID'; Expression={[Convert]::ToBase64String(([GUID]$_.ObjectGUID).ToByteArray())}} | Sort-Object Name | Format-Table -AutoSize
关键优化点说明
- 精准OU查询:通过
-SearchBase参数指定目标OU的LDAP路径,确保只查询指定组织单元下的用户。 - 高效属性获取:避免使用
Properties *拉取所有AD属性,仅明确指定需要的Name、SamAccountName、ObjectGUID,大幅提升脚本运行效率。 - 批量生成ImmutableID:借助
Select-Object的计算属性功能,对每个用户的ObjectGUID自动完成Base64转换,无需单独遍历处理。 - 排序与格式化输出:用
Sort-Object Name按姓名首字母排序,最后通过Format-Table -AutoSize生成自适应宽度的清晰表格。
内容的提问来源于stack exchange,提问作者user21182593
相关产品推荐
相关产品推荐

