PowerShell 通过两个自定义属性过滤所有用户(如果它们对 GAL 隐藏),并检查 O365 是否具有转发设置

PowerShell to filter all Users by two Custom Attributes, if they are Hidden from GAL, and also check if O365 has Forwarding setup

我目前正在尝试编写一个 PowerShell 脚本,它允许我查看所有设置了两个特定自定义属性的 AD 用户。我正在过滤这个。对于那些在 GAL 中隐藏的用户,我也会拉动他们。我还需要以某种方式能够检查他们的 O365 帐户是否有转发设置。这一切都可以通过一个脚本实现吗?这是我目前所拥有的,但由于这行不通,所以我向前画了一个空白。非常感谢任何帮助!

代码如下:

$UserList = Get-ADUser -Filter {ExtensionAttribute1 -Like "*" -AND ExtensionAttribute2 -Like "*"} -Properties DisplayName, EmailAddress, ExtensionAttribute1,ExtensionAttribute2,msExchHideFromAddressLists | select DisplayName, EmailAddress, ExtensionAttribute1, ExtensionAttribute2, msExchHideFromAddressLists; Get-Mailbox -Identity $UserList | select ForwardingSmtpAddress, DeliverToMailboxAndForward

您可以执行以下操作:

$Params = @{
        Filter = "ExtensionAttribute1 -Like '*' -AND ExtensionAttribute2 -Like '*'"
        Properties = 'DisplayName','EmailAddress','ExtensionAttribute1','ExtensionAttribute2','msExchHideFromAddressLists'
}

$UserList = Get-ADUser @Params
foreach ($User in $UserList) {
    $Mailbox = Get-Mailbox -Identity $User.EmailAddress
    $User | Select-Object DisplayName,EmailAddress,ExtensionAttribute1,ExtensionAttribute2,msExchHideFromAddressLists,
            @{n='ForwardingSmtpAddress';e={$Mailbox.ForwardingSmtpAddress}},
            @{n='DeliverToMailboxAndForward';e={$Mailbox.DeliverToMailboxAndForward}}
}

该代码将 AD 用户数据作为集合存储在 $UserList 中。该集合使用 foreach 循环迭代以对每个用户执行 Get-MailboxSelect-Object 语句使用计算属性组合用户和邮箱对象数据。此代码将输出到控制台。如果你想把它存储在一个变量中,你可以将 foreach 语句设置为一个变量,如 data = foreach ($User in $UserList) {.