Если ваш файл на самом деле представляет собой .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
}