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

PowerShell模块参数无法接收管道传递的ADUser数组问题排查

解决PowerShell管道传递AD用户仅获取最后一个对象的问题

问题根源

  • 参数类型拼写错误:Microsoft.ActiveDirectory.Management.ADAcount[]应为Microsoft.ActiveDirectory.Management.ADAccount[](缺失字母c),类型不匹配导致PowerShell无法将多个管道对象正确收集为数组。
  • 未使用PowerShell管道处理块:通过管道传递对象时,PowerShell会逐个发送对象,若无process块,函数仅在所有对象传递完成后执行一次,此时$Users仅保留最后一个对象。

修复后的代码

Function Export-Excel
{
   [cmdletBinding()]
   param(
       [parameter(ValueFromPipeline)]
       [Microsoft.ActiveDirectory.Management.ADAccount[]] $Users  
   )

   begin {
       # 初始化数组用于收集所有管道传递的AD用户对象
       $allUsers = @()
   }

   process {
       # 将当前管道中的对象添加到收集数组
       $allUsers += $Users
   }

   end {
       Write-Host $allUsers.count
       # 在此编写导出Excel的逻辑,使用$allUsers即可获取全部用户
   }
}

验证测试

执行Get-ADUser -Filter * -Properties * | Export-Excel,此时会输出正确的用户总数(如2500),而非1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:05:42