Проверить пользователей AD для экспорта свойств в формате csv и включить null

#powershell

#powershell

Вопрос:

У меня есть список мобильных номеров, с которыми я хочу попытаться сопоставить пользователей ad, а затем экспортировать в формате csv.

Текущий скрипт работает до сих пор, но я хочу, чтобы он включал строку, когда он не находит пользователя, который указывает номер мобильного телефона, с которого у него не было совпадения.

 $ou="OU=User Accounts,OU=Users,OU=Company,DC=dc01,DC=local"

get-content chk_usr_mobile.csv | 
ForEach {
$aduser=get-aduser -SearchBase $ou -filter{(mobile -eq $_)} -Properties *|
select -Property company,emailaddress,@{L='departmentnumber'; E={$_.departmentnumber[0]}}, mobile,givenname,sn
if ($aduser -eq $null){
$aduser=$_
}
else{
$aduser}
} | export-csv .tel_result.csv -encoding UTF8 -notypeinformation 
  

Итак, вывод, который я хочу, должен быть таким в csv:

 "company","emailaddress","departmentnumber","mobile","givenname","sn"
"Company","user1g@company.com","123","123456789","Joe","Doe"
"no user found for number 98765431"
"Company","user2g@company.com","124","456789123","Jane","Doe"
  

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

1. departmentnumber это не стандартное свойство для пользователя AD. Расширена ли схема этим свойством в вашей среде?. P.S. Желаемый результат — неработающий CSV-файл..

Ответ №1:

Судя по вашему коду, входной CSV-файл вообще не CSV-файл, а скорее текстовый файл с номерами телефонов, каждый в отдельной строке..

Чтобы не нарушать вывод CSV, я предлагаю вам сделать следующее:

 $ou="OU=User Accounts,OU=Users,OU=Company,DC=dc01,DC=local"
Get-Content chk_usr_mobile.csv | ForEach-Object {
    $aduser = Get-ADUser -SearchBase $ou -Filter { mobile -eq $_ } -Properties Company,EmailAddress,departmentnumber,Mobile,GivenName,Surname
    if ($aduser) {
        $aduser | Select-Object Company,EmailAddress,@{L='DepartmentNumber'; E={$_.departmentnumber[0]}},Mobile,GivenName,Surname
    }
    else {
        [PSCustomObject]@{
            Company = 'no user found for number {0}' -f $_
            EmailAddress = ''
            DepartmentNumber = ''
            Mobile = ''
            GivenName = ''
            Surname = ''
        }
    }
} | Export-Csv .tel_result.csv -Encoding UTF8 -NoTypeInformation -Force
  

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

1. Исправьте, это просто текстовый файл в качестве входных данных, не знал, что для этого нужны все значения, чтобы не нарушать csv. Теперь это отлично работает!

2. @Anthon Спасибо за отзыв!