我想将 Department AD 属性添加到从应用程序导出的所有用户。有很多应用程序用户在 AD 中找不到。此脚本将 Department 返回给在 AD 中找到的用户,并跳过在 AD 中找不到的用户。我希望脚本返回所有用户(所有行),对于未找到的用户,返回“未找到 AD 用户”。我遗漏了什么?
$csvfile = 'C:\temp\app_users.csv'
$ADFoundUsers = $null;
$ADFoundUsers = Import-Csv -Path $csvfile | Select-Object * -First 100 |
ForEach-Object {
$FullName = $_.'FullName'
Get-ADUser -Filter "name -eq '$FullName'" -Properties *}
If ($ADFoundUsers -ne $null) {
$ADFoundUsers | select Name,Department;
}
Else {
Write-Host "No AD users found";
}
答案1
假设$ADFoundUsers
当您运行此代码时始终包含行,它永远不会相等$null
(为空),因此永远不会进入else
块。
即使那样,您也只会看到所有用户名和部门或者一个“未找到 AD 用户”实例。您需要if-else
将块放在foreach
块内,以便为每个用户返回一个“未找到”实例。代码的缩进使其看起来已经是这样的,但实际上 foreach 的结束括号位于行末Get-ADUser...
。
此外,Select-Object * -First 100
除非你正在测试所有用户,否则你不应该有这个,因为它会限制你的结果