我有以下情况:我试图创建一个PS模块,以将ADUser导出到Excel文件(作为.xlsx文件),作为自己的函数。当我将Get-ADUser命令通过管道传输到我的参数时,我没有获得所有用户,我只获得最后一个用户。我已将inputvariable声明为ADAcount对象和数组。
这里是我的代码在额外的短格式:
Function Export-Excel
{
[cmdletBinding()]
param(
[parameter(ValueFromPipeline)]
[Microsoft.ActiveDirectory.Management.ADAcount[]] $Users
)
Write-Host $Users.count
...........
}
当我现在通过powershell调用这个函数时,它看起来像:
Get-ADUser -Filter * -Properties * | Export-Excel
# Output: 1
# And this one is an ADUser Object, the last created one / the last one in the array...
# When i do this:
$user = Get-ADUser -Filter * -Properties *
Write-Host $user.count
# Output: 2500
希望你能理解我的问题:)
非常感谢,祝你圣诞快乐:)
2条答案
按热度按时间hl0ma9xz1#
如果要通过管道传输所有用户对象、导入并处理总计(用于报告),则需要使用
Begin
、Process
和End
关键字,如get-help about_functions
中所述,例如:ltskdhd12#
我做了点调查,发现:Powershell Array parameter from pipline
然后我修改了你的剧本,一点点,因为我没有广告:
解释是:对于管道中的每个项目,“进程”块运行一次。
这将为我提供所有本地用户的列表。