Powershell - 解析 Get-ADUser 属性



我想扫描Active Directory,并输出到.csv,"用户帐户"和"经理ID"。 Get-ADUserManager属性输出为DN。我在第二列中想要的是经理的员工编号。最终结果应如下所示:

User Account        Manager  
John                4342  
Jack                5432   

这是脚本:

$csvmaster = @()
$uacct = 'User Account'
$manager = 'Manager'
$ulist = get-aduser -filter {enabled -eq 'true'} -properties * | ? {$_.title -ne $null} | select GivenName, Surname, EmailAddress, EmployeeNumber, Title, Manager, Department, samaccountname -first 5
foreach ($u in $ulist)
{
$csvline = New-Object System.Object
$csvline | Add-Member -MemberType NoteProperty -name $uacct -value $u.givenname
$csvline | Add-Member -MemberType NoteProperty -name $manager -value (Get-aduser $u.manager -Properties * | select employeenumber | ? { $_ -match 'd'})
$csvmaster += $csvline
}    
$csvmaster #Test output to console  

这是我得到的:

User    Manager  
John    @{employeenumber=1238}  
Jack    @{employeenumber=1593}  

输出值正确。也就是说,我正在获取经理的ID,我只想显示号码。我尝试了正则表达式匹配,但我不确定输出是 PSCustomObject 的事实是否阻止它工作,因为如果我从foreach循环中删除| ? { $_ -match 'd'},输出不会改变。我也不确定我是否以正确的方式做到这一点。
干杯

这个很容易...您需要使用选择 cmdlet 的 -ExpandProperty 开关,如下所示:

$csvline | Add-Member -MemberType NoteProperty -name $manager -value (Get-aduser $u.manager -Properties * | select -Expand employeenumber | ? { $_ -match 'd'})

然后,不是获取具有 1 个属性的 ADUser 对象,而是获取一个字符串对象,该对象是 employeenumber 的值。

最新更新