用户没有通过 Get-ADUser 调用 targetAddress 的属性
虽然如果你把它放在你的选择中,它会在结果中显示为空,因为你可以在选择中添加你想要的任何属性名称,无论它是否存在。
这也是语法错误
$_.msExchRecipientDisplayType = '-2147483642')
您也没有正确使用比较运算,但您使用了赋值运算符。表示 -eq 与 '='。
$_.msExchRecipientDisplayType -eq ...
# Find all cmdlets / functions with a target parameter
Get-Command -CommandType Function |
Where-Object { $_.parameters.keys -match 'targetAddress'} |
Format-Table -Autosize
# No results
Get-Command -CommandType Cmdlet |
Where-Object { $_.parameters.keys -match 'targetAddress'} |
Format-Table -Autosize
# No results
Get-Command -CommandType Function |
Where-Object { $_.parameters.keys -match 'Address'} |
Format-Table -Autosize
# No results
Get-Command -CommandType Cmdlet |
Where-Object { $_.parameters.keys -match 'Address'} |
Format-Table -Autosize
< #
CommandType Name ModuleName
----------- ---- ----------
Cmdlet New-ADDCCloneConfigFile ActiveDirectory
Cmdlet New-ADOrganizationalUnit ActiveDirectory
Cmdlet New-ADUser ActiveDirectory
Cmdlet Set-ADOrganizationalUnit ActiveDirectory
Cmdlet Set-ADUser ActiveDirectory
#>
Get-Command -CommandType Function |
Where-Object { $_.parameters.keys -match 'EmailAddress|proxyAddress'} |
Format-Table -Autosize
# No results
Get-Command -CommandType Cmdlet |
Where-Object { $_.parameters.keys -match 'EmailAddress|proxyAddress'} |
Format-Table -Autosize
< #
CommandType Name ModuleName
----------- ---- ----------
Cmdlet New-ADUser ActiveDirectory
Cmdlet Set-ADUser ActiveDirectory
#>
Clear-Host
(Get-ADUser -Filter * -Properties *)[0] |
Get-Member -Force |
Select Name, MemberType |
Format-Table -AutoSize
Name MemberType
---- ----------
...
EmailAddress Property
...
mail Property
mailNickname Property
...
msExchArchiveQuota Property
msExchArchiveWarnQuota Property
msExchCalendarLoggingQuota Property
msExchCoManagedObjectsBL Property
msExchDumpsterQuota Property
msExchDumpsterWarningQuota Property
msExchELCMailboxFlags Property
msExchHomeServerName Property
msExchMailboxGuid Property
msExchMailboxSecurityDescriptor Property
msExchPoliciesIncluded Property
msExchRBACPolicyLink Property
msExchRecipientDisplayType Property
msExchRecipientTypeDetails Property
msExchTextMessagingState Property
msExchUMDtmfMap Property
msExchUserAccountControl Property
msExchUserCulture Property
msExchVersion Property
msExchWhenMailboxCreated Property
...
proxyAddresses Property
...
#>
正如其他网站所指出的,这也是这个......
($_.proxyAddresses -contains "*.onmicrosoft.com*")
...真的应该是这个...
($_.proxyAddresses -match "onmicrosoft.com")
...或者这个...
($_.proxyAddresses -like "*.onmicrosoft.com*")
OP 更新
After getting back to my test environment, the below works for the use case.
Get-ADUser -Filter * -Properties msExchRemoteRecipientType,proxyAddresses,msExchRecipientDisplayType,msExchRecipientTypeDetails |
Where-Object {($_.msExchRemoteRecipientType -eq 4) -and
($_.proxyAddresses -match "onmicrosoft.com") -and
($_.msExchRecipientDisplayType -eq '-2147483642') -and
($_.msExchRecipientTypeDetails -eq '2147483648')
}
另外,更正,不是你需要它来满足你的需求,因为 proxyAddresses 返回相同的东西,当你点击那个远程 O365 邮箱时,你会得到一个 targetAddress 属性,它只是不在本地邮箱上,因此,proxyAddresses 可能更谨慎地使用以保持一致性。
Get-ADUser -Filter * -Properties msExchRemoteRecipientType,proxyAddresses,targetAddress,msExchRecipientDisplayType,msExchRecipientTypeDetails |
Where-Object {($_.msExchRemoteRecipientType -eq 4) -and
($_.proxyAddresses -match "onmicrosoft.com") -and
($_.targetAddress -match 'onmicrosoft.com') -and
($_.msExchRecipientDisplayType -eq '-2147483642') -and
($_.msExchRecipientTypeDetails -eq '2147483648')
}