You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell判断AD组是否有Exchange2010邮箱权限的If语句失效如何解决

问题原因

Select-Object User返回的是带User属性的PS自定义对象数组,而非直接的用户名字符串,直接用对象和字符串做比较、直接输出对象都会显示属性表头,无法匹配预期。


方案1:展开属性直接获取字符串值

修改赋值语句,给Select-Object添加-ExpandProperty参数,直接提取User属性的字符串值:

# 直接提取所有User属性的字符串值到数组
$var = Get-MailboxPermission -identity "My-AD-Group" | Select-Object -ExpandProperty User

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

注意:字符串插值输出数组元素时,要用$()包裹变量,否则会直接输出数组类型+[1]文本


方案2:判断时访问对象属性

如果不修改原有赋值逻辑,判断时显式访问对象的User属性即可:

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

# 显式访问User属性做比较
if($var[1].User -like "MyDomain\My-AD-Group"){
    write-host "$($var[1].User) has been added"
}else{
    $false
}

更稳妥的优化写法

不需要硬编码索引,直接过滤匹配目标账号即可,避免索引顺序变动导致的判断错误:

$targetAccount = "MyDomain\My-AD-Group"
$matchPermission = Get-MailboxPermission -Identity "My-AD-Group" | Where-Object { $_.User -eq $targetAccount }

if ($matchPermission) {
    Write-Host "$targetAccount has been added"
} else {
    $false
}

内容的提问来源于stack exchange,提问作者Zawardo ooo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:24:05