我对 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 命令时,它可以正常工作。任何帮助将不胜感激。
使用
$smpt = Get-ExoMailbox -Identity $owner.Identity | Select-Object PrimarySmtpAddress
有效,因为之前的 Select-Object 语句返回一个对象而不是字符串。