首页 > 解决方案 > 如果语句由于 USER 标头而不起作用

问题描述

我想知道是否已将“MyDomain\My-AD-Group”添加到邮箱(Exchange 2010)的权限中。

$var = Get-MailboxPermission -identity "My-AD-Group" | select-object user

if($var[1] -like "MyDomain\My-AD-Group"){
    write-host "$var[1] has been added"
}else{
    $false
}

我认为它不起作用,因为显示了某种“列标题” $var[1]

User
----
MyDomain\My-AD-Group

我该如何摆脱它,所以我的 IF \ ELSE 会起作用?

标签: powershell

解决方案


Get-Mailboxpermission返回一个表示该邮箱权限的对象。您可以使用 egFormat-ListGet-Member来了解它具有哪些进一步的属性。

由于它是一个对象,因此您可以使用属性名称访问其属性。在您的示例中,它将是$var[1].User. 如果我没记错的话,用户本身就是一个对象。因此,您可能必须访问另一个属性来进行比较。此外,您目前只检查权限列表的第一个条目。

您可能想要的更多是这些方面:

if( ($var | Where-Object {$_.User.Displayname -eq 'MyDomain\My-AD-Group'}) -ne $null){
    Write-Output "Permissions contain the group"
}

推荐阅读