Некоторые из моих полей в моем CSV-файле отображаются как ADPropertyValueCollection
Есть ли способ получить все значения коллекции и сохранить их в моем CSV?
showInAddressBook
Microsoft.ActiveDirectory.Management.ADPropertyValueCollection
Код, который я использовал,
Get-ADUser -Filter * -Properties * | export-csv -path c:\temp\userexport.csv
Пожалуйста, не делай -properties *
если вам действительно не нужна каждая собственность, которая вам явно не нужна. Если вы перетаскиваете вниз каждое свойство пользователя, выполнение занимает намного больше времени.
Вам не нужны кавычки между всеми свойствами в вашем Select
заявление. Кроме того, у вас была обратная кавычка перед Name
. В ::join
в образце у меня тоже не сработало. Это работает:
Get-ADUser jeff.besos -Properties memberof | Select Name,DisplayName,SamAccountName, @{Name='MemberOf';Expression={$_.MemberOf -join ';'}}
Name : jeff.bezos
DisplayName :
SamAccountName : jeff.bezos
MemberOf : CN=!IDAMAdmins,OU=Admin Groups,OU=Domain Groups,DC=mydomain,DC=com;CN=!ExchangeAdministrators,OU=Admin Groups,OU=Domain
Groups,DC=mydomain,DC=com
В наши дни я действительно рекомендую экспортировать в JSON, если у вас есть многозначные атрибуты, которые вы собираетесь обрабатывать позже. Очевидно, это работает, если вы также запрашиваете несколько пользователей.
Get-ADUser jeff.bezos -Properties memberof | Select Name,DisplayName,SamAccountName,memberof | convertto-json -depth 100 | out-file C:\myuser.json
{
"Name": "jeff.bezos",
"DisplayName": null,
"SamAccountName": "jeff.bezos",
"memberof": [
"CN=!IDAMAdmins,OU=Admin Groups,OU=Domain Groups,DC=mydomain,DC=com",
"CN=!ExchangeAdministrators,OU=Admin Groups,OU=Domain Groups,DC=mydomain,DC=com",
]
}
Затем вы импортируете JSON из файла в объект (это PSCustomObject) и обрабатываете его. PSCustomObjects удобны для нарезки и нарезки кубиками.
$user = get-content C:\myuser.json | ConvertFrom-Json
$user |fl
Name : jeff.bezos
DisplayName :
SamAccountName : jeff.bezos
memberof : {CN=!IDAMAdmins,OU=Admin Groups,OU=Domain Groups,DC=mydomain,DC=com,
CN=!ExchangeAdministrators,OU=Admin Groups,OU=Domain Groups,DC=mydomain,DC=com}
Один из способов - | выберите его и укажите имя каждого свойства. Для многозначной собственности сделайте следующее:
Get-ADUser -Properties * | `
select SamAccountName,@{Name="ShowInAddressBook";Expression={$_.showInAddressBook -join ";"}} | `
Export-Csv -Path C:\Temp\UserExport.csv