Exchange Online Powershell 获取身份的 SMPT 地址

问题描述 投票:0回答:1

我对 Powershell 相当陌生,但我正在尝试获取域中所有共享邮箱的主 SMTP 地址,以便提取用户(以及组中的所有用户)对所述邮箱拥有的权限:

$permissions = Get-ExoMailbox -RecipientTypeDetails SharedMailbox -ResultSize unlimited | Get-ExoMailboxPermission | Select-Object Identity,User,AccessRights

$uniqueGroups = @{}

$groups = $permissions.User | where {$_ -notlike "NT AUTHORITY\SELF"} | where {$_ -notlike "*@*"}
$owners = $permissions | where {$_.User -notlike "NT AUTHORITY\SELF"} | where {$_.User -notlike "*@*"} | Select-Object Identity

foreach ($owner in $owners) {
    $smpt = Get-ExoMailbox -Identity $owner | Select-Object PrimarySmtpAddress
    echo $smpt
}

foreach ($group in $groups) {
    if (-not $uniqueGroups.ContainsKey($group)) {
        $uniqueGroups[$group] = $true
        echo $group
        $groupmembers = Get-DistributionGroupMember -Identity $group
        echo $groupmembers
    }
}

echo "Number of unique groups: $($uniqueGroups.Count)"

但是,

Get-ExoMailbox -Identity $owner | Select-Object PrimarySmtpAddress
语句会抛出找不到Identity的错误。当我使用任何抛出错误的身份直接在 Powershell 中执行 Get-ExoMailbox 命令时,它可以正常工作。任何帮助将不胜感激。

powershell exchange-server exchange-online
1个回答
0
投票

使用

$smpt = Get-ExoMailbox -Identity $owner.Identity | Select-Object PrimarySmtpAddress
有效,因为之前的 Select-Object 语句返回一个对象而不是字符串。

© www.soinside.com 2019 - 2024. All rights reserved.