You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中数组属性与自定义计算属性混用报错的解决问询

解决PowerShell中Select-Object混合数组属性与自定义计算属性的问题

问题原因

你猜的没错,问题确实出在混合传递数组($user_props)和单个哈希表($user_groups)给Select-Object。当你直接写Select-Object $user_props, $user_groups时,PowerShell会把整个$user_props数组当作一个参数值传递,而非将数组内的每个属性名单独拆解为参数,这就导致Select-Object无法识别这种数组类型的输入,从而触发报错。

解决方案

有两种简洁写法可以实现你的需求,不用逐个手动列出属性名:

方法1:合并属性数组与计算属性为新数组

将$user_props数组和$user_groups哈希表合并成一个新数组,再传递给Select-Object:

# User Props to select
$user_props = @(
        'Name',
        'DistinguishedName',
        'SamAccountName',
        'Enabled',
        'SID'
        )

# Get AD groups an AD user is a member of
$user_groups = @{ label = 'GroupMemberships'; expression = { (Get-ADPrincipalGroupMembership -Identity $_.DistinguishedName).Name } }

# 合并属性数组与计算属性
$select_props = $user_props + $user_groups

# Get AD Users
$users = Get-ADUser -Filter * -Property $user_props | Select-Object $select_props -ErrorAction Stop -ErrorVariable _error

方法2:使用数组展开运算符

在Select-Object的参数中,用数组展开语法将$user_props的元素逐个拆解,再追加$user_groups:

# User Props to select
$user_props = @(
        'Name',
        'DistinguishedName',
        'SamAccountName',
        'Enabled',
        'SID'
        )

# Get AD groups an AD user is a member of
$user_groups = @{ label = 'GroupMemberships'; expression = { (Get-ADPrincipalGroupMembership -Identity $_.DistinguishedName).Name } }

# Get AD Users
$users = Get-ADUser -Filter * -Property $user_props | Select-Object $user_props*, $user_groups -ErrorAction Stop -ErrorVariable _error

或者用另一种展开写法:

$users = Get-ADUser -Filter * -Property $user_props | Select-Object @($user_props; $user_groups) -ErrorAction Stop -ErrorVariable _error

补充说明

  • Get-ADUser的-Property参数本身支持数组输入,你原来的-Property $user_props写法是完全没问题的。
  • 两种方法都能实现复用$user_props数组、同时添加自定义计算属性的需求,选哪种全看个人习惯。

内容的提问来源于stack exchange,提问作者Zer0F8th

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 23:30:48