Поиск пользователей в AD - PullRequest
       8

Поиск пользователей в AD

0 голосов
/ 11 октября 2018

Я пытаюсь использовать текстовый файл адреса электронной почты пользователей для поиска имен 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 }

Я пытаюсь понять, что я делаю неправильно

1 Ответ

0 голосов
/ 11 октября 2018

Если ваш файл на самом деле представляет собой .csv (значения, разделенные запятыми), то, что вы делаете, это получает необработанное строковое содержимое с помощью Get-Content.Существует командлет Import-Csv, который возьмет ваш CSV и превратит его в объект powershell, чтобы вы могли перебирать его и получать доступ к заголовкам как к свойствам, которые вы пытаетесь сделать в своем коде:

$users = Import-Csv -Path '/path/to/file.csv'

Затем в вашем цикле вы можете очистить и ускорить ваш код с помощью , а не , запрашивая все дерево AD для каждого пользователя:

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

Супер упрощенная версия:

#requires -Module ActiveDirectory
foreach ($user in Import-Csv -Path '/path/to/file.csv')
{
    (Get-ADUser -Filter "EmailAddress -eq '$($user.EmailAddress)'").SamAccountName
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...