私はググって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)の出力はこれに似ています
(2)の出力はこれに似ています
ただし、どちらの場合も、「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
を表示するように両方のスクリプトを変更する方法をアドバイスできますか?私はグーグリンを試しましたが、運はありません。
$ 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
}
最後に、私はプログラミングの友人(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