在AD中查找用户

JRN*_*JRN 1 powershell active-directory

我正在尝试使用用户电子邮件地址的文本文件来查找相应用户的samaccountname名称.

Clear-Host

Import-Module ActiveDirectory

$File = "C:\T2\Users.csv"

$Users = Get-Content $File

ForEach ($User in $Users)

{ Get-ADUser -Filter * | Where { $_.EmailAddress -eq $User } | Select SamAccountName -ExpandProperty SamAccountName }
Run Code Online (Sandbox Code Playgroud)

我想知道我做错了什么

The*_*le1 6

如果您的文件实际上是.csv(以逗号分隔的值),那么您正在使用的是获取原始字符串内容Get-Content.有一个cmdlet,Import-Csv它将获取您的CSV并将其转换为powershell对象,以便您可以迭代它并访问标题作为您尝试在代码中执行的属性:

$users = Import-Csv -Path '/path/to/file.csv'
Run Code Online (Sandbox Code Playgroud)

然后在循环中,您可以通过查询每个用户的整个AD树来清理和加速代码:

foreach ($user in $users)
{
    Get-ADUser -Filter "EmailAddress -eq '$($user.EmailAddress)'" |
        Select-Object -ExpandProperty SamAccountName
}
Run Code Online (Sandbox Code Playgroud)

超简化版:

#requires -Module ActiveDirectory
foreach ($user in Import-Csv -Path '/path/to/file.csv')
{
    (Get-ADUser -Filter "EmailAddress -eq '$($user.EmailAddress)'").SamAccountName
}
Run Code Online (Sandbox Code Playgroud)