【发布时间】:2020-08-09 03:18:29
【问题描述】:
我正在尝试获取由 EmployeeNumbers 属性的固定列表给出的 AD 用户的 SamAccountName 或 Name 属性,为此我创建了一个数组,然后我想在屏幕上打印所有 SamAccountName 属性以将它们复制到网络程序。
$EmpID=(57885,57718,57806,57607,59281,57790,60097,61103,60552,57862,60698,61321,57730,57402,58546,57871,57886,57669,55878,52052,57811,60106,60741,61050,59279,61053,60735,50718,51459,57805,52343,57716,60618,57908,58356,60619,50937,61204,61099,60517,61015,61123,56078,54103,57947,57861,57991,60547,57915,58559,57010,59285,61003,61016,51620,56383,60621)
foreach($usr in $EmpID){get-aduser -filter "EmployeeNumber -eq '$($usr).EmployeeNumber'" -properties Name}
因此,对于 $EmpID 数组中的每个值,我都会遇到一个错误。
Get-ADUser : No se encuentra ningún parámetro de posición que acepte el argumento 'EmployeeNumber = '60621''.
En línea: 3 Carácter: 2
+ {get-aduser where "EmployeeNumber = '$usr'" -Properties Name}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-ADUser], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.GetADUser
【问题讨论】:
-
$usr 只是数字。所以将过滤器更改为employeenumber -eq $usr
-
您需要检查您尝试比较的属性。 ADUser 同时拥有
EmployeeNumber和EmployeeID。这两个属性都是字符串。我的猜测是您混合了这两个属性,因为您有变量$EmpID,但尝试通过属性EmployeeNumber找到用户。此外,默认情况下会返回 prpertyName,而您必须明确请求EmployeeNumber和/或EmployeeID
标签: powershell active-directory powershell-5.0