首页 > 解决方案 > Get-ADuser 脚本问题

问题描述

我想将 CSV 文件中的电子邮件地址列表与我们的 Active Directory 进行比较。我很难将所有部分放在一起。

伪代码:

代码:

Import-Csv users.csv |
     Get-ADUser -Filter {mail -eq $_.mail } |
     where {$_.enabled -eq $true} |
     Select-Object -Property DistinguishedName, samaccountname, mail, enabled

我想我需要为 SearchBase 添加其他信息,但我不知道如何添加它。

例如:-SearchBase "DC=na,DC=corp,DC=<company name>,DC=com"

在 CSV 文件中是一列。列名是邮件。我试图加入的 AD 属性是邮件。

标签: powershell

解决方案


您可以将 csv 导入存储在一个变量中,并获取您拥有的 AD 中的所有电子邮件地址,Compare-Object在列表之间使用,然后针对结果使用 foreach。

$matchingUsers = New-Object System.Collections.ArrayList
$csv = import-csv users.csv 
$emails = $(get-aduser -filter * -Properties mail,Enabled | ? {$_.Enabled -eq $True} | select mail).mail
$comparison = $($(compare-object -ReferenceObject $a -DifferenceObject $b -IncludeEqual)| ? {$_.SideIndicator -eq '=='}).InputObject
foreach($object in $comparison) {
     $user = Get-ADUser -Filter {mail -eq $object} -SearchBase "DC=na,DC=corp,DC=,DC=com" -Properties DistinguishedName,samaccountname,mail,enabled
     $matchingUsers.Add($user)
}

然后导出$matchingUsers,格式化为表格,之后您需要的任何内容


推荐阅读