まず、私は Powershell の正式なトレーニングを受けていないため、ほとんどのコードは適合コードであるか、比較的単純です。マシンの拡張プロパティを取得するとき、または返される列のリストを再編成するときに問題があります。
私の組織では、PC は、私が関与しているローカル OU のメンバー、または私が権利を持たないエンタープライズ OU のいずれかになります。ローカルの OU グループをスキャンしても、探している結果が得られません。このロジックをユーザーとグループのメンバーシップに適用するための答えを見つけることができましたが、PC ではうまくいかないようです。
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 列を追加しようとすると、3 番目にリストされていても、結果の最初の列として表示されます。この場合、DNSHostName を追加した場合、出力ファイルを Group Name、PCName、DNSHostName (またはその他の属性) にする必要があります。しかし、その順序で。