繁体   English   中英

从组中提取AD记录属性,但也需要经理的电子邮件地址

[英]Extracting AD records attributes from a group but need manager's email address as well

我有这个脚本,它从安全组中获取所有成员,然后将一堆他们的属性提取到文件中。 除拉出经理的电子邮件地址外,它均能正常工作。 奇怪的是,如果我运行此命令直接在PowerShell中获取经理的电子邮件地址,它将返回他们的电子邮件地址。

这是整个脚本:

Get-ADGroupMember -Identity "ACP Users" -Recursive |
    Get-ADUser -Property employeeNumber, SN, Manager, GivenName, Name, Office,
        Mobile, emailaddress, Department, Title, 
        samaccountname, officephone, homephone |
    select employeeNumber,SN, GivenName,Manager, Office, Mobile, 
        emailaddress,Department, Title, samaccountname, 
        officephone,homephone,enabled | 
    Select-object @{Name='Empno';Expression={$_."employeeNumber"}},
        @{Name='EmployeeName';Expression={$_."GivenName" + ' ' + $_."SN"}},
        @{N='Manager';E={(Get-ADUser $_.Manager).Name}},
        @{N='ManagerSAM';E={(Get-ADUser $_.Manager).samaccountname}},
        @{N='ManagerEmail';E={(Get-ADUser(Get-ADUser $._samaccountname -Properties manager).manager -properties mail).mail}},
        @{Name='EmployeeEmail';Expression={$_."emailAddress"}},
        @{Name='Office';Expression={$_."Office"}},
        @{Name='Title';Expression={$_."Title"}},
        @{Name='Department';Expression={$_."Department"}},
        enabled |
    Export-Csv -Path C:\temp\ACP_Uers.csv -NoTypeInformation

如果我在PowerShell中手动运行此部件,它将手动返回Active Directory用户记录,则效果很好:

(Get-ADUser(Get-ADUser chuck.east -Properties manager).manager -Properties mail).mail

作为整个脚本运行时的文件输出,您可以看到经理的电子邮件为空白,但可以获取经理和经理的山姆。

"Empno","EmployeeName","Manager","ManagerSAM","ManagerEmail","EmployeeEmail","Office","Title","Department","enabled"
"8921","Chuck East","Jim Dean","jim.dean",,"Chuck.East@sb.com","East","BSA","IT","True"

是否知道为什么不提取经理的电子邮件?

@{N='ManagerEmail';E={
    (Get-ADUser(
        Get-ADUser $._samaccountname - Properties manager).manager -properties mail).mail
    }
},

您输入的错字是$._samaccountname 应该是$_.samaccountname

我不确定您为什么偏离了先前的模式。 这应该工作:

@{N='ManagerEmail';E={
        Get-ADUser $_.manager -properties mail).mail
    }
},

当然,您可以一次获得管理器对象,而不是三倍...并且根据Matt的建议,构建对象而不是使用Select-Object,如下所示:(未经测试...在我的手机上)

Get-ADGroupMember -identity “ACP Users” -Recursive | get-aduser -Property employeeNumber,SN, Manager, GivenName, Name,Office, Mobile, emailaddress,Department, Title, samaccountname,officephone,homephone | Foreach-Object {
    $manager = Get-ADUser $_ -Properties email
    $outputData = [ordered] @{
            Empno=$_."employeeNumber"
            EmployeeName=$_."GivenName" + ' ' + $_."SN"
            Manager=$manager.distinguishedName
            #etc for the other properties you want
    }
    New-object psobject -properties $outputData
} | Export-csv -path C:\temp\ACP_Uers.csv -NoTypeInformation

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM