Извлечение атрибутов записей AD из группы, но также необходим адрес электронной почты менеджера - PullRequest
0 голосов
/ 27 августа 2018

У меня есть этот скрипт, который получает всех участников из группы безопасности, а затем извлекает в файл набор их атрибутов. Он работает правильно, за исключением получения адреса электронной почты менеджера. Странно то, что если я запускаю эту команду, чтобы получить адрес электронной почты менеджера непосредственно в 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"

Есть идеи, почему он не тянет электронную почту менеджера?

1 Ответ

0 голосов
/ 27 августа 2018
@{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
    }
},

Конечно, вы можете получить объект менеджера один раз, а не три раза ... И по предложению Мэтта, построить объект вместо использования 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...