【问题标题】:How to handle multiple objects in variable如何处理变量中的多个对象
【发布时间】:2022-11-02 02:49:25
【问题描述】:

我正在尝试比较成员是具有以下脚本的列表:

    $Guid = "59041b96-c71d-436c-8297-7af5fcf4e22a"

$Members = Get-RetentionCompliancePolicy -identity $guid -DistributionDetail | Select -ExpandProperty OneDriveLocation | select name,displayname | sort displayname 

$User = "Humbert, Jason"

    $ODPolicy = $members.displayname | Select-String -Pattern "Humbert, Jason"


    if($User -like $ODPolicy){
        Write-host "USer $($USer.primarysmtpaddress) is in"
        #$OD.RetentionSet = $True
        }Else{
        Write-Warning "User $($USer.primarysmtpaddress) not in Policy"}

$ODPolicy 的输出返回 2 个名称,因为有两个邮箱(活动和非活动)

PS C:\Users\XYZ> $ODPolicy

亨伯特,杰森 亨伯特,杰森

运行if($User -like $ODPolicy) 时,脚本似乎无法处理返回的两个对象,它返回Else{ Write-Warning "User $($USer.primarysmtpaddress) not in Policy"}

我该如何修改它,以便 if($User -like $ODPolicy) 将其视为 true 并返回 Write-host "USer $($USer.primarysmtpaddress) is in"?

【问题讨论】:

  • if ($members.displayname -contains "Humbert, Jason"){}够了
  • 谢谢,这对我来说简化了。
  • @Toni您能否提供您的建议作为答案?

标签: powershell


【解决方案1】:

-like 运算符在这里没有用处,因为您想要精确匹配并且想要验证项目集合 $members 是否包含特定的单个项目 $User

所以你应该切换到-contains 运算符,例如:

if ($members.displayname -contains  "Humbert, Jason"){}

【讨论】:

    猜你喜欢
    • 2015-12-28
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多