PowerShell新手求助:验证Edge默认站点加载的判断问题
解决PowerShell判断Edge窗口标题失败的问题
你的问题核心在于**Select MainWindowTitle返回的是对象而非纯字符串**,直接和字符串做-like对比自然不匹配,哪怕属性值看起来一致。
问题分析
Get-Process | Select MainWindowTitle输出的是一组自定义对象,每个对象包含MainWindowTitle属性,而非直接的标题文本。比如实际输出是类似@{MainWindowTitle="Wikipedia, the free encyclopedia"}的结构,和纯字符串"wikipedia.org"对比时,PowerShell会把对象转为字符串后再比较,结果肯定不相等。
修正方案
方案1:提取纯标题字符串后判断
用-ExpandProperty参数直接提取MainWindowTitle的字符串值,再做通配符匹配(注意标题通常包含更多内容,需要用*包裹目标字符串):
# 只针对Edge进程,避免其他进程干扰 $edgeTitles = Get-Process msedge | Select-Object -ExpandProperty MainWindowTitle if ($edgeTitles -like "*wikipedia.org*") { Write-Host "Site successfully opened." } else { Write-Host "Site failed." }
方案2:直接在进程对象上过滤判断
用Where-Object直接检查每个Edge进程的窗口标题属性,逻辑更简洁:
if (Get-Process msedge | Where-Object { $_.MainWindowTitle -like "*wikipedia.org*" }) { Write-Host "Site successfully opened." } else { Write-Host "Site failed." }
额外提示
- 优先指定进程名
msedge,避免遍历所有进程,提升效率同时减少误判。 - 如果需要精确匹配,可改用
-match正则表达式,或者根据实际标题内容调整通配符位置。
内容的提问来源于stack exchange,提问作者eieeza
相关产品推荐
相关产品推荐

