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

PowerShell检测内网网页指定文本:-contains能否用于匹配?

搞定你的PowerShell字符串检测问题

嘿,我一眼就看出问题出在哪了——你用错了-contains运算符!

-contains在PowerShell里是用来检查集合(比如数组、列表)里有没有某个完整元素的,不是用来找字符串里的子串的。你的$output是一整个HTML字符串,属于单个元素,所以哪怕里面确实有'Create!',-contains也会返回false,自然不会输出'YES'。

正确的检测方式

给你两种靠谱的替代方案:

1. 用-match做正则匹配

如果只是要确认'Create!'存在,直接用-match就行,它会在字符串里搜索匹配的内容:

if($output -match 'Create!') {Write-Host 'YES'} else {Write-Host 'NO'}

2. 用-like做通配符匹配

如果你更习惯用通配符的写法,-like更直观,记得用*来匹配任意字符(注意不要像之前那样把星号加在引号里的多余位置,直接写*Create!*就行):

if($output -like '*Create!*') {Write-Host 'YES'} else {Write-Host 'NO'}

额外的优化建议

另外,你现在用的Internet Explorer COM对象(New-Object -com InternetExplorer.Application)现在已经逐渐被微软弃用了,很多新系统或者企业环境可能已经禁用了IE的COM组件,后续可能会出问题。推荐你换成更现代的Invoke-WebRequest来获取网页内容,还能自带错误处理,更适合监控场景:

$targetUrl = 'https://myUrl/'
try {
    # 尝试请求网页,失败就触发catch块
    $response = Invoke-WebRequest -Uri $targetUrl -ErrorAction Stop
    $output = $response.Content
    
    if($output -match 'Create!') {
        Write-Host 'YES'
    } else {
        Write-Host 'NO'
        # 这里可以加告警逻辑,比如发邮件、调用告警API
    }
} catch {
    Write-Host '网页无法访问:' $_.Exception.Message
    # 触发访问失败的告警
}

内容的提问来源于stack exchange,提问作者Felix Wong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:32:23