通过 Powershell 对 AD 对象的属性进行排序
Sorting properties of an AD-object via Powershell
我正在尝试对 ActiveDirectory 计算机对象所属的组进行排序。要获取组列表,我使用以下代码(在本例中为 PC123
):
Get-adcomputer 'PC123' -properties Memberof | Select-Object -ExpandProperty MemberOf
我得到以下输出,正如预期的那样,这些组没有排序:
CN=(A) Group3,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
CN=(A) Group1,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
CN=(A) Group4,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
CN=(A) Group2,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
我尝试使用 Sort-Object:
进行排序
Get-adcomputer 'PC215' -properties Memberof | Select-Object -ExpandProperty MemberOf | Sort-Object -Property Memberof
不幸的是,输出保持不变。我试着通过改变 Sort-Object -Property Memberof
的位置来玩弄一下,但这似乎不是问题所在。任何提示将不胜感激。
您正在尝试根据不再存在的 属性 (MemberOf
) 对 array
进行排序,在这种情况下,您应该 不 使用 -Property
.
以这个对象为例:
$computer = [pscustomobject]@{
Name = 'PC215'
MemberOf = @(
'CN=(A) Group3,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local'
'CN=(A) Group1,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local'
'CN=(A) Group4,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local'
'CN=(A) Group2,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local'
)
}
PS /> $computer | Select-Object -Expand MemberOf | Sort-Object -Property MemberOf
CN=(A) Group3,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
CN=(A) Group1,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
CN=(A) Group4,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
CN=(A) Group2,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
PS /> $computer | Select-Object -Expand MemberOf | Sort-Object
CN=(A) Group1,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
CN=(A) Group2,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
CN=(A) Group3,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
CN=(A) Group4,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
值得添加 official documentation 中的这句话,因为它与问题相关:
If sort properties are not included in a command, PowerShell uses default sort properties of the first input object. If the type of the input object has no default sort properties, PowerShell attempts to compare the objects themselves.
我正在尝试对 ActiveDirectory 计算机对象所属的组进行排序。要获取组列表,我使用以下代码(在本例中为 PC123
):
Get-adcomputer 'PC123' -properties Memberof | Select-Object -ExpandProperty MemberOf
我得到以下输出,正如预期的那样,这些组没有排序:
CN=(A) Group3,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
CN=(A) Group1,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
CN=(A) Group4,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
CN=(A) Group2,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
我尝试使用 Sort-Object:
进行排序Get-adcomputer 'PC215' -properties Memberof | Select-Object -ExpandProperty MemberOf | Sort-Object -Property Memberof
不幸的是,输出保持不变。我试着通过改变 Sort-Object -Property Memberof
的位置来玩弄一下,但这似乎不是问题所在。任何提示将不胜感激。
您正在尝试根据不再存在的 属性 (MemberOf
) 对 array
进行排序,在这种情况下,您应该 不 使用 -Property
.
以这个对象为例:
$computer = [pscustomobject]@{
Name = 'PC215'
MemberOf = @(
'CN=(A) Group3,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local'
'CN=(A) Group1,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local'
'CN=(A) Group4,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local'
'CN=(A) Group2,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local'
)
}
PS /> $computer | Select-Object -Expand MemberOf | Sort-Object -Property MemberOf
CN=(A) Group3,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
CN=(A) Group1,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
CN=(A) Group4,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
CN=(A) Group2,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
PS /> $computer | Select-Object -Expand MemberOf | Sort-Object
CN=(A) Group1,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
CN=(A) Group2,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
CN=(A) Group3,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
CN=(A) Group4,OU=OU-Path1,OU=OU-Path2,DC=domain,DC=local
值得添加 official documentation 中的这句话,因为它与问题相关:
If sort properties are not included in a command, PowerShell uses default sort properties of the first input object. If the type of the input object has no default sort properties, PowerShell attempts to compare the objects themselves.