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

修改PowerShell脚本导出指定OU下的AD用户与计算机

修正后的PowerShell脚本:指定OU列表导出用户/计算机成员

问题分析

你提供的原始脚本存在两个核心问题:

  • 输入的$OUlist是域名/层级路径格式,无法直接作为Get-ADUser/Get-ADComputer的-SearchBase参数(该参数需要AD对象的DistinguishedName格式)
  • 直接导出AD对象会包含大量冗余字段,无法生成你需要的Name,Type极简CSV结构

完整修正脚本

# 定义目标OU列表(保持你习惯的输入格式)
$OUlist = @(
    "domain.com/Site-A/OU1"
    "domain.com/Site-A/OU2"
    "domain.com/Site-B/OU1"
    "domain.com/Site-B/OU2"
    # 可继续添加更多OU路径
)

# 定义函数:将域名/OU路径转换为AD识别的DistinguishedName
function ConvertTo-OUdn {
    param([string]$Path)
    $parts = $Path -split "/"
    $dnParts = @()
    # 处理OU层级部分(从倒数第2位到第1位)
    for ($i = $parts.Count - 2; $i -ge 0; $i--) {
        $dnParts += "OU=$($parts[$i])"
    }
    # 处理域名部分(最后一位,拆分后转为DC=格式)
    $domainParts = $parts[-1] -split "\."
    $dnParts += $domainParts | ForEach-Object { "DC=$_" }
    # 拼接为完整DN
    return $dnParts -join ","
}

# 遍历OU列表,收集用户和计算机并构造自定义输出对象
$results = $OUlist | ForEach-Object {
    $ouDn = ConvertTo-OUdn -Path $_
    # 获取当前OU下的所有用户
    Get-ADUser -Filter * -SearchBase $ouDn -Properties Name | ForEach-Object {
        [PSCustomObject]@{
            Name = $_.Name
            Type = "User"
        }
    }
    # 获取当前OU下的所有计算机
    Get-ADComputer -Filter * -SearchBase $ouDn -Properties Name | ForEach-Object {
        [PSCustomObject]@{
            Name = $_.Name
            Type = "Computer"
        }
    }
}

# 导出到指定CSV文件
$results | Export-CSV "Result.csv" -NoTypeInformation -Encoding UTF8

关键修改说明

  1. OU路径转DN:通过ConvertTo-OUdn函数自动将你输入的domain.com/Site-A/OU1格式转换为AD要求的OU=OU1,OU=Site-A,DC=domain,DC=com格式,无需手动编写DN。
  2. 自定义输出对象:不再直接导出AD原生对象,而是构造仅包含Name和Type的自定义对象,完全匹配你需要的CSV结构。
  3. 编码优化:添加-Encoding UTF8参数确保CSV在不同系统下的兼容性。

注意事项

  • 运行脚本前需确保已加载Active Directory模块(可通过Import-Module ActiveDirectory手动加载)
  • 执行脚本的账户需具备目标OU的读取权限

内容的提问来源于stack exchange,提问作者Senior Systems Engineer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 07:07:24