按保存出生日期的扩展名对用户列表进行排序

问题描述 投票:0回答:1

我使用扩展属性6来保存用户的出生日期。格式为 YYYY-MM-DD。 我试过:

Get-ADUser -Filter 'enabled -eq "true"' -Properties extensionAttribute6 | Sort-Object extensionAttribute6.substring(4,5), Name | ft Name, extensionAttribute6

但我明白:

Sort-Object : A positional parameter cannot be found that accepts argument 'System.Object[]'.
At D:\Scripts\getBirthdayList.ps1:1 char:75
+ ... ttribute6 | Sort-Object extensionAttribute6.substring(6,5), Name | ft ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Sort-Object], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SortObjectCommand

最终结果应如下所示:(按月、日、名称排序)

Name               extensionAttribute6
----               -------------------
John Doe           1969-02-28
Albert Einstein    1897-03-14
Karl Meier         1973-12-01
James Bond         1975-12-22

如有任何帮助,我们将不胜感激。

powershell sorting active-directory
1个回答
0
投票

您正在尝试评估表达式:

extensionAttribute6.SubString(6, 5)
作为
Sort-Object
的参数之一,在这种情况下,您需要使用脚本块:

Get-ADUser .... | Sort-Object { $_.extensionAttribute6.SubString(6, 5) }, Name...

请参阅 about_Calculated_Properties #Sort-Object

请注意,您还可以将

datetime
转换为
extensionAttribute6
的值,而不是使用
.SubString

Get-ADUser .... | Sort-Object { [datetime] $_.extensionAttribute6 }, Name...
© www.soinside.com 2019 - 2024. All rights reserved.