在AD用户和属性的数组中创建报表,并允许属性为空



不久前,我创建了一个相当简单的脚本来为HR做一些报告。它基本上从活动目录中获取用户,并将其放入一个数组中,HR使用该数组来报告具有名字、姓氏、电子邮件、经理等属性的用户。没有什么特别的。

我发现,像Manager这样的某些字段不经常使用,当这种情况发生时,数组最终会使用前一个人的属性,而不是允许属性为空。我可以输入什么来允许用户空白,而不使用前一个人的属性?以下是代码的大致概念。。。


$Users = Get-ADUser -filter * -properties sAMAccountname, givenName, surname, Title, Manager
$Array =[System.Collections.ArrayList]@()
Foreach ($User in $Users){
$match = New-Object PSObject
$match | Add-Member NoteProperty "User Name" $User.sAMAccountname
$match | Add-Member NoteProperty "First Name" $User.givenName
$match | Add-Member NoteProperty "Last Name" $User.surname
$match | Add-Member NoteProperty "Title" $User.Title
$match | Add-Member NoteProperty "Manager" $User.Manager
$Array += $match
}
$Array | Export-csv -path C:tempUsers.csv -NoTypeInformation

输出工作得很好,减去AD中的最后一个人没有填写内容,而这里通常是经理。如下所示。因此,它只保留manager值,并在下一行中使用。

sAMAccountName-givenName-姓氏-职务-经理

123456-Tom-Burke-销售主管-8805488

456789-Ken-Grady-销售运营经理-8805488

当最后一个用户456789没有经理填写AD.时

谢谢大家!

已解决。。。

我输入了一个睡眠时间段,因为看起来放慢速度有助于清除数组的变量。我还在一开始输入了一个明确的变量匹配,以确保它在前进过程中清除了旧数据。

最新更新