Скрипт Powershell для проверки наличия пользователей в csv-файле в AD и создания 2 выходных списков

#powershell

Вопрос:

Я не очень хорошо разбираюсь в написании сценариев, но я пару часов пытался создать скрипт, который будет просматривать список пользователей.csv и выводить: 1. existingAccounts.txt 2.NotExistingAccounts.txt. Это работает, но я хотел бы получить 1. existingAccounts.txt чтобы включить также такие свойства,как: Описание, адрес электронной почты учетных записей.

сценарий:

 Import-Module ActiveDirectory
$UserList = get-content E:UsersJohnDoeDesktopUserList.csv
Foreach ($Item in $UserList) {
$user = $null
$user =  Get-aduser -filter {samAccountName -eq $Item}
if ($user)
    {
    $user | Out-File E:UsersJohnDoeDesktopexistingAccounts.txt -encoding default -append
    }
    else
    {
    "$item does not exist" | Out-File E:UsersJohnDoeDesktopNotExistingAccounts.txt -encoding default -append
    }
}
 

existingAccounts.txt производит:

 DistinguishedName : CN=John DOE,OU=BOF
                    Management,OU=Privileged,OU=BOF,OU=Accounts,OU=KADEN,DC=DRUI,DC=PASXO,DC=com
Enabled           : True
GivenName         : John
Name              : John Doe
ObjectClass       : user
SamAccountName    : john.doe
Surname           : Doe
UserPrincipalName : john.doe@BOF.kaden.com
 

NotExistingAccounts.txt производит

 user does not exist
 

пожалуйста, помогите 😊

Комментарии:

1. Его лучше использовать Import-Csv для чтения данных CSV (если это действительно CSV — CSV означает «значения, разделенные запятыми», и, хотя текст находится в определенном формате).

2. В дополнение к комментарию Билла, лучшим типом вывода будет Csv для найденных пользователей.

Ответ №1:

Существует определенный набор свойств, которые Get-ADUser будут отображаться для пользователя рекламы по умолчанию, вам необходимо указать другие свойства, которые вы хотите отобразить с помощью -Properties параметра (например, Description и mail ).

Этот пример кода должен содержать те свойства, которые вы ищете, и экспортировать пользователей в файл CSV. Попробуй это.

Удалите Select-Object samAccountName, Description, Mail в конце, если вы хотите добавить свойства по умолчанию плюс те, которые вам нужны.

 Import-Module ActiveDirectory
$UserList = Get-Content E:UsersJohnDoeDesktopUserList.csv
$hash = @{
    Properties = 'Description','mail'
}

$foundUsers = foreach($Item in $UserList)
{
    $hash.LDAPFilter = "(|(samAccountName=$item)(name=$item))"
    Get-ADUser @hash

    if ($user)
    {
        $user
        continue
    }
    
    "$item does not exist" |
    Out-File E:UsersJohnDoeDesktopNotExistingAccounts.txt -encoding Default -Append
}

$foundUsers | Select-Object samAccountName, Description, Mail |
Export-Csv E:UsersJohnDoeDesktopexistingAccounts.csv -NoTypeInformation