我有以下脚本,该脚本根据用户的名称导出他们的samaccountname。它正在/正在做它应该做的事情。
$users = Get-Content C:\Users\metho\Desktop\users1.txt
$output = foreach ($user in $users){
Get-ADUser -Filter "Name -eq '$user'" | Select-Object name, samaccountname
}
$output | export-csv C:\Users\metho\Desktop\Users_Export_Test.csv -NoTypeInformation
原始csv包含527个用户...输出csv包含480个用户。基本上,未找到的用户会在输出csv中跳过(但我希望输出也以相同顺序列出缺少的用户),这导致了我的问题。我想有一个输出CSV,它也列出了不在系统上的用户,因此我可以进行手动挖掘,此刻,我必须通过比较原始的csv和导出的csv来查找丢失的用户。时间太长。
有没有一种方法可以导出具有找到的用户名的csv并列出在系统上发现的用户。我认为它必须与export-csv开关有关。我正在尽力找到答案,也许有人知道答案?任何帮助都将得到高度重视。
-方法
答案 0 :(得分:2)
您可以尝试这样的事情:
$users = Get-Content C:\Users\metho\Desktop\users1.txt
$output = @()
foreach ($user in $users) {
$adUser = Get-ADUser -Filter "Name -eq '$user'" | Select-Object Name, SamAccountName
if ($adUser) {
$output += $adUser
}
else {
$output += [PSCustomObject]@{
Name = $user
SamAccountName = 'Not found in AD'
}
}
}
$output | Export-Csv C:\Users\metho\Desktop\Users_Export_Test.csv -NoTypeInformation
如果在AD中找不到用户,则该用户的输出为
"Name","SamAccountName"
"Username as in the txt file","Not found in AD"
答案 1 :(得分:1)
分两点优化Theo的好答案
$output
,避免使用+=
$adUser = Get-ADUser ...
和if($adUser)
集成为一个步骤。$users = Get-Content C:\Users\metho\Desktop\users1.txt
$output = foreach ($user in $users) {
if ($adUser = Get-ADUser -Filter "Name -eq '$user'" | Select-Object Name, SamAccountName){
$adUser
} else {
[PSCustomObject]@{
Name = $user
SamAccountName = 'Not found in AD'
}
}
}
$output | Export-Csv C:\Users\metho\Desktop\Users_Export_Test.csv -NoTypeInformation