我正在尝试从 AD 中提取一些数据,但得到了一些令人困惑的结果。我正在运行:
Get-ADUser -Filter * -Properties * | select userPrincipalName, msTSLSProperty01
它向我展示了所有用户,其中 6 个在 msTSLSProperty01 字段中有数据。令人困惑的是,它应该返回 42 个在该字段中有数据的用户。为什么该字段中有数据的用户显示为空白?
编辑 1:此外,当我运行时:
Get-ADUser username -Properties msTSLSProperty01 | select msTSLSProperty01
它返回空集。
答案1
如果您的环境中有多个 DC,如果您期望的更改最近才写入这些用户属性,则您可能只会看到复制延迟。Powershell 可能会查询与您用来验证这些属性是否存在的其他工具不同的 DC。您可以使用命令-Server
中的参数明确告诉 PowerShell 与特定 DC 通信Get-ADUser
。
或者,您可能存在权限问题,导致无法读取部分用户的该属性。
答案2
作为@RyanBolger 的补充回答,此 PowerShell 脚本将查询每个 DC(如果它们未安装 ADWS 服务,则会报告错误)。这可能足以让您确定哪个服务器缺少这些用户;或者至少查看哪些服务器没有缺少这些用户(即,将可能的候选者限制为没有 ADWS 的服务器/通过 PS 查询时出错的服务器)。
clear-host
Get-AdDomainController -Filter * | %{
$count = 0
$myError = ''
try {
$count = (Get-AdUser -Filter * -server $_.Name).Count
} catch {
$myError = $_.ToString()
}
(New-Object -TypeName PSObject -Property @{
Name = $_.Name
Site = $_.Site
OS = $_.OperatingSystem
Count = $count
Error = $myError
})
} | select Name, Count, Site, OS, Error | sort Count, Error, Name | format-table -autosize