У меня возникла небольшая проблема. У меня есть CSV с некоторыми именами. Мне нужно было получить адреса электронной почты этих пользователей, поэтому я создал небольшой скрипт, который найдет пользователей с таким именем и фамилией в AD.
После этого я хотел экспортировать его в новый файл CSV, но сохранил номера телефонов из первого файла CSV, чтобы он также был доступен в новом экспорте CSV.
Последняя часть, кажется, не работает. В выводе это выражение отображается как {}.
Кто-нибудь может мне помочь?
$csv = import-csv -path C:\users\da6\desktop\UsersZonderEmail.csv
$output = @()
foreach ($i in $csv) {
$givenname = $i.Voornaam
$lastname = $i.Achternaam
$number = $i.IpPhone
$output += try {Get-ADUser -Filter {givenname -eq $givenname -and surname -eq $lastname} | select Name, UserPrincipalName, @{ name = "ipphone"; expression=$number}} catch {}
}
Распространенная ошибка с моей стороны, наш UPN совпадает с адресом электронной почты, это привычка.
В основном, что не так с вашим кодом, так это то, что вы забыли открывающую скобку {
в expression
oart вычисляемого свойства.
Также обратите внимание, что -Filter
должен быть нить, а не блоком сценария.
Наконец, добавление в массив с помощью +=
— плохая привычка, так как массив весь необходимо перестраивать в памяти при каждом добавлении.
Лучше пусть PowerShell соберет значения из цикла:
$csv = Import-Csv -Path 'C:\users\da6\desktop\UsersZonderEmail.csv'
$output = foreach ($item in $csv) {
Get-ADUser -Filter "GivenName -eq '$($item.Voornaam)' -and Surname -eq '$($item.Achternaam)'" -Properties EmailAddress |
Select-Object Name, UserPrincipalName, @{ Name = "ipphone"; Expression = {$item.IpPhone}}, EmailAddress
}
# output to new CSV file
$output | Export-Csv -Path 'C:\users\da6\desktop\UsersMetEmail.csv' -NoTypeInformation
Это решило проблему! Благодарю вас! Не знал, что мы должны использовать строку для фильтра, спасибо!
Действительно ли во входном CSV-файле есть заголовок столбца
'IpPhone
? Вы говорите, что вам также нужны адреса электронной почты, но не пытаетесь запросить это свойство. Можете ли вы показать нам первые 3 или 4 строки входного CSV, как показано в блокноте?