簡體   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