Объединение 2 командлетов для одного результата / вывода с использованием pscustomobject - PullRequest
0 голосов
/ 28 апреля 2020

По сути, я пытаюсь добиться вывода с 4 столбцами / списком (в данном случае я экспортирую в виде текста). Get-MailboxPermission дает мне свойство идентичности, пользователя, прав доступа, но это не так. дай мне свойство "менеджер". Мне нужно определить, куда этот конкретный пользователь сообщает. Итак, я попробовал PSCustomObject и надеюсь, что смогу поместить результаты в массив. Смотрите скрипт ниже

$GETMAILBOXPERM = Get-Content C:\Users\Account\Desktop\MailboxUsers\MAILBOXESUSERS.txt | ForEach-Object {Get-MailboxPermission $_ |
    where {
    ($_.User -notlike ‘*NT AUTHORITY*’) -and
    ($_.User -notlike ‘*S-1-5-21-*’) -and
    ($_.User -notlike ‘*NAMPRD08*’) -and
    ($_.User -notlike ‘*PRDTSB01*’) -and
    ($_.User -notlike ‘*0365Admin*’) -and
    ($_.User -notlike ‘*Discovery Management*’) -and
    ($_.User -notlike ‘*NAMPR08A005*’) -and
    ($_.User -notlike ‘*NT AUTHORITY*’)
    }
    }
    $Results = foreach( $Mailbox in (get-content C:\Users\Account\Desktop\MailboxUsers\MAILBOXESUSERS.txt))
    {
    $Users = Get-User $Mailbox
    if ($Users){
    foreach ($User in $Users){
    [pscustomobject]@{
                    DisplayName       = $User.name
                    Account           = $GETMAILBOXPERM.user
                    Manager           = $User.manager
                    Access            = $GETMAILBOXPERM.accessrights
                             }
                    }
               }
    }
    $Results | Format-List -Property DisplayName, Account, Manager, Access | Out-File C:\Users\Account\Desktop\MailboxUsers\mailbox4.txt

Вот вывод в текстовом файле. Я правильно понимаю DisplayName и Manager, но учетная запись и доступ из текстового файла, похоже, не равны l oop.

DisplayName: MAILBOX1

Account: {user1@domain.ca, user2@domain.ca, user3@domain.ca, user4@domain.ca...}

Менеджер: MANAGER1

Доступ: {FullAccess, FullAccess, FullAccess, FullAccess ...}

DisplayName: MAILBOX2

Учетная запись: {user1@domain.ca, user2@domain.ca, user3@domain.ca, user4@domain.ca...}

Менеджер: MANAGER2

Доступ: {FullAccess, FullAccess, FullAccess, FullAccess. ..}

1 Ответ

0 голосов
/ 28 апреля 2020

Атрибут менеджера пользователей обычно находится в ADDS, а не в Exchange. Тем не менее, этот текстовый файл, кажется, где вы получаете это динамически от ADDS.

Почему вы используете Format-List? PowerShell автоматически отформатирует список в тот момент, когда столбцы превысят 5.

Это не проверено, поскольку у меня нет среды, в которой можно его примерить, но есть рефакторинг того, что у вас здесь. Дайте ему шанс.

$GetMailboxPerm = Get-Content -Path 'C:\Users\Account\Desktop\MailboxUsers\MAILBOXESUSERS.txt' | 
ForEach-Object {Get-MailboxPermission $PSitem |
where {
        ($PSitem.User -notlike ‘*NT AUTHORITY*|
        *S-1-5-21-*|
        *NAMPRD08*|
        *PRDTSB01*|*0365Admin*|
        *Discovery Management*|
        *NAMPR08A005*|
        *NT AUTHORITY*’)
    }
}

foreach( $Mailbox in (Get-Content -Path 'C:\Users\Account\Desktop\MailboxUsers\MailboxUsers.txt'))
{
    $Users = Get-User $Mailbox
    if ($Users)
    {
        foreach ($User in $Users)
        {
            [pscustomobject]@{
                DisplayName       = $User.name
                Account           = $GetMailboxPerm.user
                Manager           = $User.manager
                Access            = $GetMailboxPerm.accessrights
            } | Out-File -FilePath 'C:\Users\Account\Desktop\MailboxUsers\mailbox4.txt' -Append
        }
    }
}
...