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

如何让PowerShell的Select-String输出通过管道调用Substring方法

提取SQL Server备份速度文件中的目标字符串问题解决

问题场景

需要从记录SQL Server备份速度的txt文件中提取目标字符串,首先用以下命令定位包含备份速度信息的行:

Select-String -Path "DatabaseBackup - USER_DATABASES - FULL*.txt" -pattern "MB/sec"

但目标行长度超过2000字符,尝试通过管道调用substring截取内容时,执行以下代码出现错误:

Select-String -Path "DatabaseBackup - USER_DATABASES - FULL*.txt" -pattern "MB/sec" | ForEach-Object { $_.substring(42,30) }

错误提示:

Method invocation failed because [Microsoft.PowerShell.Commands.MatchInfo] does not contain a method named 'substring'.

解决方案

JosefZ提供了针对性的解决方案:由于数据库名称被单引号包裹,备份速度被圆括号包裹,可通过以下代码提取目标内容:

Select-String -Path "DatabaseBackup - USER_DATABASES - FULL*.txt" -pattern "MB/sec" | 
ForEach-Object {
    $_.Line.substring($_.Line.IndexOf(''''), $_.Line.IndexOf('''', $_.Line.IndexOf('''')+1)-$_.Line.IndexOf('''')+1) + "    " + $_.Line.substring($_.Line.IndexOf('('),$_.Line.IndexOf(')')-$_.Line.IndexOf('(')+1)
}

输出示例

'DBA'    (796.230 MB/sec)  
'ReportServer'    (488.596 MB/sec) 
'ReportServerTempDB'    (139.270 MB/sec)
'TSTGP'    (420.375 MB/sec)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:10:28