Powershell比较两个对象属性

标签 powershell

使用 Get-Content filename.JSON | 加载了两个 JSON 文件ConvertFrom-Json

一个对象名称 $SubscriberEmail 具有属性名称 email

第二个对象名称$ADEnabledUsersEmail有一个名为Work Email的属性

尝试比较两个对象并找到不在 $ADEnabledUsersEmail 对象中的对象并写出名称。

这是当前的 foreach 方法,但似乎多次输出所有电子邮件。

foreach($S in $SubscriberEmail ){
    foreach($A in $ADEnabledUsersEmail){
        if($A.'Work Email' -eq $S.email ){
            Write-Host "User is active"
        }else{
            Write-Host $s.email
        }
    }
}

最佳答案

如果您想过滤数组,您可以使用Where-Object.Where()方法或带有右侧comparison operator的循环。即:-notin-notcontains:

$SubscriberEmail.email.where({ $_ -notin $ADEnabledUsersEmail.'Work Email' })
$SubscriberEmail | Where-Object {
    $ADEnabledUsersEmail.'Work Email' -notcontains $_.email
}
foreach($email in $SubscriberEmail.email)
{
    if($email -notin $ADEnabledUsersEmail.'Work Email')
    {
        $email
    }
}

还有更多过滤数组的选项,只需在 Google 上搜索filtering arrays powershell即可。

关于Powershell比较两个对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69792810/

相关文章:

vb.net - 邮箱和 Active Directory 帐户创建自动化

Powershell 模拟到 'quote words'

performance - Powershell性能

powershell - Powershell将现有电子邮件从文本格式更改为html正文格式

带 RunspacePool 的 C# PowerShell - 如何导入 Exchange Cmdlet,如 Get-Mailbox?

powershell - PowerShell 中的 ">"符号是什么意思

powershell - 如何将代理函数的输出格式化为单独的行?

powershell - 如何在批处理文件的 powershell 命令中包含与号?

c# - Exchange 2010 + Powershell 和 C# 从当前用户获取 PSCredential 时出现问题

Powershell:如何将列表内容输出为表格?