Во-первых, у меня нет формального обучения Powershell, поэтому большая часть того, что я пишу, является адаптированным кодом или относительно проста. У меня проблемы с получением расширенных свойств для компьютера или реорганизацией списка возвращаемых столбцов.
В моей организации ПК может быть членом локального подразделения, к которому я принадлежу, или корпоративного подразделения, на которое у меня нет прав. Сканирование моих локальных групп OU не дало бы мне все результаты, которые я ищу. Мне удалось найти ответ, чтобы применить эту логику к членству пользователей и групп, но, похоже, она не работает для ПК.
Import-Module ActiveDirectory
$OU = "OU=Computers,OU={ORG UNIT}"
$Path = "C:\{FILE LOC}\AD-groupPClist_$(get-date -f yyyyMMdd_HHmm).csv"
$PC = ForEach ($P in (Get-ADComputer -Filter * -SearchBase $OU))
{
$Machine = Get-ADComputer $P -Properties MemberOf
$Groups = ForEach ($Group in ($Machine.MemberOf))
{
(Get-ADGroup $Group).Name
}
$Groups = $Groups | Sort
ForEach ($Group in $Groups)
{
New-Object PSObject -Property @{
Group = $Group
PCName= $Machine.Name
}
}
}
$PC | Export-CSV $Path -NoTypeInformation
Когда я пытаюсь добавить столбец DNSHostName (например), он отображается как первый столбец в результатах, даже если он указан третьим. В этом случае, если бы я добавил DNSHostName, я бы хотел, чтобы выходным файлом были Имя группы, PCName, DNSHostName (или какой-либо другой атрибут); но в таком порядке.