web-dev-qa-db-ja.com

「送信者」と「完全」のアクセス許可をエクスポートするときに、ログオン名(domain \ userid)ではなくADユーザーの「表示名」を取得する方法

私はググって2つのスクリプトを作成しました。 (1)、(2)

(1)1つ目は、「ap.cz」という共有メールボックスの「フルアクセス」をエクスポートすることです。

Get-Mailbox ap.cz | Get-MailboxPermission | where {$_.user.tostring() -ne "NT AUTHORITY\SELF" -and $_.IsInherited -eq $false} | Select Identity,User,@{Name='Access Rights';Expression={[string]::join(', ', $_.AccessRights)}} | Export-Csv \\myserver\c$\fulla.csv –NoTypeInformation

(2)2つ目は、「ap.cz」という共有メールボックスの「送信者」をエクスポートする方法です。

Get-Mailbox ap.cz | Get-ADPermission | where { ($_.ExtendedRights -like “*Send-As*”) -and ($_.IsInherited -eq $false) -and -not ($_.User -like “NT AUTHORITY\SELF”) } | Select Identity, User, Deny | Export-CSV \\myserver\c$\sendass.csv

どちらのスクリプトも正常に動作しています。

(1)の出力はこれに似ています

enter image description here

(2)の出力はこれに似ています

enter image description here

ただし、どちらの場合も、「User logon name」という形式(domain\userid)で表示されます。useridは組織内の番号です。

しかし、csvへのエクスポート中に「display name/full name」ではなくUser logon nameを取得する必要があります。

私は取引所管理者ではなく、取引所/ Powershellに精通していませんが、ITインフラストラクチャ全体を確認/サポートしています。マネージャが名前のリストを要求している場合、特定の「送信者」または「フルアクセス」を求めています。メールボックス、上記のスクリプトを使用してエクスポートし、"user logon name"display nameに手動で再変換する必要があります。

誰かが"full name/display name"ではなくlogin nameを表示するように両方のスクリプトを変更する方法をアドバイスできますか?私はグーグリンを試しましたが、運はありません。

4
user879

$ users.user.rawidentityは型キャストと数行を削除します...

"フルアクセス"リスト

$users=Get-Mailbox ap.cz | Get-MailboxPermission | where {$_.user.tostring() -ne "NT AUTHORITY\SELF" -and $_.IsInherited -eq $false} 
$ss=$users.user.rawidentity | Where-Object {$_ -notlike "s-1*"}

foreach ($item in $ss){ 
$b = $item.Split("\")
$c=$b.Split("}")[1]
Get-ADUser -identity $c -properties DisplayName | select DisplayName
}

"送信者"リスト

$users=Get-Mailbox ap.cz | Get-ADPermission | where { ($_.ExtendedRights -like “*Send-As*”) -and ($_.IsInherited -eq $false) -and -not ($_.User -like “NT AUTHORITY\SELF”) } | Select User
$ss=$users.user.rawidentity | Where-Object {$_ -notlike "s-1*"}

foreach ($item in $ss){ 
$b = $item.Split("\")
$c=$b.Split("}")[1]
Get-ADUser -identity $c -properties DisplayName | select DisplayName
}
1
Aravinda

最後に、私はプログラミングの友人(ADオブジェクトについて何も知らない人)に助けを求め、最終的には以下の解決策になりました。ソリューションを共有したいので、誰かが恩恵を受けたり、より良いソリューションを提案したりできます。

(1)1つ目は、「ap.cz」という共有メールボックスの「フルアクセス」をエクスポートすることです

 $users=Get-Mailbox ap.cz | Get-MailboxPermission | where {$_.user.tostring() -ne "NT AUTHORITY\SELF" -and $_.IsInherited -eq $false} | Select User

            $num=$users.length

            for

($i=0; $i -lt $num; $i++)
        {
        Try
        {

            $item=$users[$i]
            $itemcast=[string]$item
            $b = $itemcast.Split("\")[1]
            $c=$b.Split("}")[0]

        Get-ADUser -identity $c -properties DisplayName | select DisplayName
        }


        catch
        {
        $error="error"
        }
        }

(2)2番目は、「ap.cz」と呼ばれる共有メールボックスの「送信者」をエクスポートすることです

 $users=Get-Mailbox ap.cz | Get-ADPermission | where { ($_.ExtendedRights -like “*Send-As*”) -and ($_.IsInherited -eq $false) -and -not ($_.User -like “NT AUTHORITY\SELF”) } | Select User
    $num=$users.length

    for($i=0; $i -lt $num; $i++)
    {
    Try
    {

        $item=$users[$i]
        $itemcast=[string]$item
        $b = $itemcast.Split("\")[1]
        $c=$b.Split("}")[0]

    Get-ADUser -identity $c -properties DisplayName | select DisplayName
    }


    catch
    {
    $error="error"
    }
    }

両方のスクリプトはscript1.ps1およびscript2.ps1として保存され、出力は出力ファイルc:\ araa.csvに保存されました

csvにエクスポートする方法

 script2.ps1 | out-file c:\araa.csv
0
user879