如何获得具有数字SamAccountName的所有ADuser。如果SamAccountName包含字母,那么我不需要它。
$num = Get-AdUser -Filter "SamAccountName -like [integer]" -Properties postalCode, postOfficeBox, SamAccountName, Enabled
使用-Filter
,您无法测试SamAccountName是否仅由数字组成,并且您必须通过正则表达式Where-Object
运算符使用-math
子句。
$users = Get-AdUser -Filter * -Properties PostalCode, POBox, SamAccountName, Enabled |
Where-Object { $_.SamAccountName -match '^\d+$' }
即使无法使用-Filter
简洁地完成查询,也可以使用-Filter
加快查询时间,然后再传递到Where-Object
:
$Params = @{ Properties = 'postalCode','postOfficeBox','SamAccountName','Enabled'
Filter = "samaccountname -like '" + (1,2,3,4,5,6,7,8,9,0 -join "*' -or samaccountname -like '") + "'"
}
Get-AdUser @Params | Where SamAccountName -match '^\d+$'
想法是,在发送到samaccountname
之前,仅查找以数字开头的Where-Object
对象,该对象将仅显示具有属性值的所有数字的帐户。如果您只有一小部分以数字开头的帐户,这将大大缩短查询时间。