PowerShell中‘Supply values for the following parameters/Input Object’含义及脚本故障排查
问题解答
1. 提示的含义与出现原因
- 提示含义:
Export-Csv命令需要InputObject参数的输入,但当前没有接收到任何数据,因此PowerShell要求手动提供该参数的值。 - 出现原因:脚本里
Sort-Object -Unique这一行末尾没有添加管道符|,导致Export-Csv是独立执行的,无法获取前面命令输出的用户列表,触发了参数缺失的提示。
2. 输入任意值后CSV为空的原因
手动输入的任意值只是单个字符串,Export-Csv会将其作为无属性的对象处理,自然无法生成包含用户信息的内容,最终导出的CSV为空(或仅含空表头)。而原本需要导出的用户列表因为管道中断,根本没有传递到Export-Csv环节。
3. 脚本修正方案
核心是修复管道连接,同时建议添加用户过滤(避免导出组、计算机等非用户AD对象),修正后的脚本如下:
Get-ADGroup -Filter '(Name -like "AD-AllowMailbox-*")' | ForEach-Object {Get-ADGroupMember -Recursive -Identity $_} | Where-Object {$_.objectClass -eq 'user'} | # 仅保留用户对象 Select-Object -ExpandProperty 'Name' | Sort-Object -Unique | # 添加管道符连接后续导出命令 Export-Csv -NoTypeInformation -Path C:\Users\Admin\mailbox.csv
额外说明
Where-Object {$_.objectClass -eq 'user'}用于过滤掉组、计算机等非用户AD对象,确保导出内容仅为目标用户。- 管道符
|是PowerShell中传递数据的关键,必须保证命令间的管道连接不中断,否则数据无法向下传递。
内容的提问来源于stack exchange,提问作者AntonioGrissini
相关产品推荐
相关产品推荐

