Это действительно не Format-List, вызывающий это, то же самое могло бы случиться с select, хотя использование Format- *, как это на самом деле не вещь.Это будет список по умолчанию, так что нет никакой реальной причины использовать его для того, что вам нужно.
Тебе даже не нужно это расширять.
Проблема заключается в том, что вы не можете использовать этот цикл и ожидать, что он сработает, автоформаторы этого не допустят.Вы должны непосредственно обработать коллекцию, что-то вроде этого ...
Get-ADUser -Properties * -Filter * |
Select-Object -property @{Label = "Name";Expression = {$_.sAMAccountName}},
@{Label = "Initials";Expression = {$_.initials}},
@{Label = "Email";Expression = {$_.Mail}},
@{Label = "Creation";Expression = {$_.whenCreated}},
@{Label = "Deletion";Expression = {%{(Get-Date)}}},
@{Label = "Last change";Expression = {$_.whenChanged}},
@{Label = "Groups";Expression = {%{(Get-ADPrincipalGroupMembership $_.SamAccountName).Name -join ','}}} |
Out-File -append "C:\temp\deleted.txt" -Encoding utf8
Get-Content -Path "C:\temp\deleted.txt"
# Results
Name : Administrator
Initials :
Email : Administrator@contoso.com
Creation : 3/31/2017 8:02:15 PM
Deletion : 12/17/2018 4:07:52 AM
Last change : 12/9/2018 7:23:22 PM
Groups : Domain Users,Administrators,Schema Admins,Enterprise Admins,Domain Admins,Group Policy Creator Owners,Organization Management,Recipient
Management,ADSyncAdmins,ADRMSSuperUsers
…
Обновление согласно комментарию / вопросу ОП
Нетбеспокоюсь, рад, что это сработало для вас.
Что касается ...
Не могли бы вы объяснить мне, в чем разница между этими двумя командами группы AD?
Если вы имеете в виду ...
Get-ADPrincipalGroupMembership Administrator |выберите -expandproperty name
... vs ... (Get-ADPrincipalGroupMembership Administrator) .Name
... они якобы одно и то же, каждый из которых создает список массивов имен групп.
# use the expand switch to show the group name list
Get-ADPrincipalGroupMembership Administrator | select -expandproperty name
Domain Users
Administrators
Schema Admins
Enterprise Admins
Domain Admins
Group Policy Creator Owners
Organization Management
Recipient Management
ADSyncAdmins
ADRMSSuperUsers
# Use the property to view the group name list
(Get-ADPrincipalGroupMembership Administrator).Name
Domain Users
Administrators
Schema Admins
Enterprise Admins
Domain Admins
Group Policy Creator Owners
Organization Management
Recipient Management
ADSyncAdmins
ADRMSSuperUsers
Однако форматировщики, когда данные сериализуются, попытаются поместить все это в одну строку.Тем не менее, они будут обрезать это, чтобы соответствовать ширине экрана / страницы.Так что, если вам нужен другой макет, то вам нужно либо поработать с файлами форматирования по умолчанию, либо обработать его с помощью кода.Лично я никогда не пытаюсь с ними связываться, а просто работаю, чтобы справиться с этим в коде.Итак, это ...
(Get-ADPrincipalGroupMembership Administrator).Name -join ','
... просто говорит, я знаю, что эта коллекция представляет собой список массивов.Я знаю, что это будет усечено по ширине экрана / страницы, поэтому объедините этот список строк как одну строку и автоматическую перенос.
Вы могли бы сделать то же самое с исходным расширением таким же образом ...
(Get-ADPrincipalGroupMembership Administrator | select -expandproperty name) -join ','
Я заклеил список групп в конце по эстетическим соображениям, а также по более короткой форме, так как я предпочитаю не писать ненужный код или максимально использовать ненужные опции.У каждого свои предпочтения.