You need to enable JavaScript to run this app. PowerShell跨文件类型检测文档IP及模拟Windows通配符搜索实现咨询
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell跨文件类型检测文档IP及模拟Windows通配符搜索实现咨询

PowerShell技术实现方案

一、模拟Windows通配符搜索的文件筛选能力

PowerShell原生命令已内置与Windows资源管理器完全对齐的通配符匹配规则,无需额外适配即可实现系统级的通配符搜索效果,核心支持的匹配逻辑包括:

  • *:匹配任意长度(含0长度)的任意字符序列
  • ?:匹配单个任意字符
  • [字符区间]:匹配指定区间内的单个字符,例如[a-m]匹配a到m范围的小写字母

常用实现示例

# 匹配当前目录下所有以“项目方案”开头、后缀为3个字符的文件,等价于Windows搜索栏输入"项目方案.???"
Get-ChildItem -Path "C:\目标路径" -Filter "项目方案.???" -File

# 递归遍历所有子目录,筛选文件名包含"2024"、后缀为pdf或docx的文件,等价于通配符组合`*2024*.{pdf,docx}`
Get-ChildItem -Path "C:\目标路径" -Recurse -File | Where-Object { $_.Name -like "*2024*" -and $_.Extension -in ".pdf",".docx" }

如需完全对齐Windows资源管理器不区分大小写的匹配特性,可手动指定通配符匹配规则:

# 配置忽略大小写的通配符匹配规则,和系统搜索行为保持一致
$matchPattern = [System.Management.Automation.WildcardPattern]::new("*终稿*", [System.Management.Automation.WildcardOptions]::IgnoreCase)
Get-ChildItem -Path "C:\目标路径" -Recurse -File | Where-Object { $matchPattern.IsMatch($_.Name) }

二、跨全文件类型的文档IP地址检测实现

仅支持txt格式的检测脚本,本质是直接读取文件的纯文本流,遇到docx、pdf、xlsx等带格式封装的文档时会因为编码、二进制结构问题无法读取内容。要实现全类型检测,核心是先对不同格式的文档提取可检索的纯文本,再通过通用正则匹配IP地址,整个过程无需依赖第三方组件。

可直接运行的全类型检测脚本

# 定义IPv4匹配正则,优化误匹配逻辑,排除版本号、长数字串的错误识别
$ipMatchRegex = '\b(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\b'
# 配置需要扫描的文件后缀,可按需扩展支持任意类型
$scanExtensions = @(".txt",".md",".csv",".docx",".xlsx",".pdf",".rtf")
# 配置跳过的系统目录,避免无意义的扫描消耗资源
$skipPathKeywords = @("Windows", "Program Files", "Temp")

# 遍历目标路径下的所有符合规则的文件
Get-ChildItem -Path "C:\待扫描的目录" -Recurse -File | Where-Object {
    $_.Extension.ToLower() -in $scanExtensions -and
    -not ($skipPathKeywords | Where-Object { $_.FullName -like "*$_*" })
} | ForEach-Object {
    $file = $_
    try {
        # 调用Windows内置文本提取接口,自动兼容多格式文档的内容读取
        $fileText = [Windows.Data.Text.TextContent]::ExtractTextAsync($file.FullName).GetAwaiter().GetResult()
        # 提取内容中匹配到的所有IP,去重后返回
        $foundIPs = [regex]::Matches($fileText, $ipMatchRegex) | ForEach-Object { $_.Value } | Sort-Object -Unique
        if ($foundIPs) {
            [PSCustomObject]@{
                文件路径 = $file.FullName
                匹配到的IP = $foundIPs -join "、"
            }
        }
    }
    catch {
        Write-Warning "文件读取失败:$($file.FullName),错误原因:$($_.Exception.Message)"
    }
} | Format-Table -AutoSize

适配说明

  • 方案依托Windows系统内置的文本提取能力,可自动解析docx、pdf、xlsx等带格式封装的文档内容,解决原txt脚本格式兼容性差的问题
  • 支持灵活扩展扫描范围,只需将对应文件后缀加入$scanExtensions数组,即可适配任意需要检测的文件类型
  • 正则规则经过优化,不会将版本号、长数字串这类相似格式的内容错误识别为IP地址

内容的提问来源于stack exchange,提问作者Alex Pandian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 17:36:04