You need to enable JavaScript to run this app. PowerShell脚本Where-Object过滤块内变量不生效无输出问题
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell脚本Where-Object过滤块内变量不生效无输出问题

PowerShell变量匹配失效问题修复

问题原因

PowerShell的字符串解析规则中,单引号包裹的字符串不会对内部变量做展开处理,只会原样输出字符串内容。你现有代码中Where-Object筛选条件使用'SMTP:$EmailAddressAlias'写法时,$EmailAddressAlias不会被替换为你输入的实际邮箱地址,只会作为普通字符串匹配,因此无法返回正确结果。

修复方案

将筛选条件中的单引号替换为双引号即可,双引号包裹的字符串会自动解析内部变量。也可额外增加输入非空校验避免空值无效查询,优化后代码如下:

$EmailAddressAlias = Read-Host "请输入要查询关联邮箱的完整邮件地址"
# 输入非空校验
if ([string]::IsNullOrWhiteSpace($EmailAddressAlias)) {
    Write-Host "输入内容不能为空,请重新运行脚本"
    exit 1
}

Get-Mailbox -Identity * |
Where-Object {$_.EmailAddresses -like "SMTP:$EmailAddressAlias"} |
Format-List Identity, EmailAddresses

补充说明

如果需要做模糊匹配,可在变量前后添加通配符*,写法为"SMTP:*$EmailAddressAlias*",即可匹配所有包含输入内容的SMTP地址。

内容的提问来源于stack exchange,提问作者Mr-Goodbytes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 05:39:04