PowerShell获取AD计算机:CanonicalNameOfObject显示异常及分支筛选求助
解决方案
1. 修复CanonicalNameOfObject属性导出异常问题
CanonicalNameOfObject是多值属性,直接导出会显示类型名,需要先提取实际值。根据你的AD环境场景选择处理方式:
单值场景(多数环境下该属性为单值)
Get-ADComputer -Filter * -Property CanonicalNameOfObject,OperatingSystem,OperatingSystemVersion,ipv4Address | Select-Object Name, @{Name='CanonicalName'; Expression={$_.CanonicalNameOfObject[0]}}, OperatingSystem, OperatingSystemVersion, ipv4Address | Export-CSV c:\ADcomputerslist.csv -NoTypeInformation -Encoding UTF8
多值场景(若存在多个值,用分号拼接)
Get-ADComputer -Filter * -Property CanonicalNameOfObject,OperatingSystem,OperatingSystemVersion,ipv4Address | Select-Object Name, @{Name='CanonicalNames'; Expression={$_.CanonicalNameOfObject -join ';'}}, OperatingSystem, OperatingSystemVersion, ipv4Address | Export-CSV c:\ADcomputerslist.csv -NoTypeInformation -Encoding UTF8
2. 限定仅获取特定分支的计算机
用-SearchBase参数指定目标OU的LDAP路径(比如OU=上海分公司,DC=corp,DC=example,DC=com),仅返回该OU及其子OU下的计算机:
# 替换为你的目标OU的LDAP路径 $targetOU = "OU=上海分公司,DC=corp,DC=example,DC=com" Get-ADComputer -Filter * -SearchBase $targetOU -Property CanonicalNameOfObject,OperatingSystem,OperatingSystemVersion,ipv4Address | Select-Object Name, @{Name='CanonicalName'; Expression={$_.CanonicalNameOfObject[0]}}, OperatingSystem, OperatingSystemVersion, ipv4Address | Export-CSV c:\ADcomputerslist.csv -NoTypeInformation -Encoding UTF8
额外提示
- 不要用
-Property *,会加载大量无用属性拖慢执行速度,明确指定需要的属性更高效 - 若不确定目标OU的LDAP路径,可执行
Get-ADOrganizationalUnit -Filter "Name -like '*上海*'"查询
内容的提问来源于stack exchange,提问作者Kristian Morozov
相关产品推荐
相关产品推荐

