PowerShell Get-ADUser搭配Select-Object语法错误求助
问题分析与修正
错误原因
你遇到的Select-Object : Missing an argument for parameter 'Property'错误,是因为**-Property参数后直接换行,PowerShell无法识别后续的哈希表数组作为参数值**;同时原代码未指定Get-ADUser需要额外返回的属性,导致部分字段会获取不到数据。
修正后的代码
$userDataRows = Get-ADUser -LDAPFilter '(&(objectClass=User)(objectCategory=Person))' ` -Properties cn, name, givenName, initials, sn, extensionAttribute6, extensionAttribute2, streetaddress, l, st, physicalDeliveryOfficeName, co, c, postalCode, telephoneNumber | Select-Object -Property @{N='AcctName';E={$_.cn}}, @{N='Name';E={$_.name}}, @{N='FirstName';E={$_.givenName}}, @{N='Initial';E={$_.initials}}, @{N='LastName';E={$_.sn}}, @{N='MyID';E={$_.extensionAttribute6}}, @{N='Badge';E={$_.extensionAttribute2}}, @{N='Address';E={$_.streetaddress}}, @{N='City';E={$_.l}}, @{N='State';E={$_.st}}, @{N='Office';E={$_.physicalDeliveryOfficeName}}, @{N='Country';E={$_.co}}, @{N='CountryID';E={$_.c}}, @{N='PostCode';E={$_.postalCode}}, @{N='Phone';E={$_.telephoneNumber}}
关键修正点
- 参数语法调整:将第一个哈希表紧跟在
-Property后,后续哈希表用逗号分隔换行,让PowerShell识别整个哈希表数组是-Property的参数值;也可以用括号把所有哈希表括起来,比如-Property (@{...}, @{...})。 - 指定AD属性:添加
-Properties参数,列出所有需要提取的AD属性名——因为Get-ADUser默认只返回有限的核心属性,像extensionAttribute*、streetaddress这类扩展/非核心属性必须明确指定才能获取到数据。
内容的提问来源于stack exchange,提问作者Jeff Vanderdoes
相关产品推荐
相关产品推荐

