【发布时间】:2016-07-12 13:33:25
【问题描述】:
我正在尝试创建一个 PowerShell 脚本来从大型日志文件中挑选特定的行。使用Select-String,我将数据归结为多行字符串中我需要的行。现在我想进一步修改它,只返回这些行中的 ID 号,在一个逗号分隔的字符串中。
当前代码:
if (Select-String $SearchFile -Pattern $SearchString -Quiet) {
Write-Host "Error message found"
$body += Select-String $SearchFile -Pattern $SearchString -Context 1,0 |
foreach {$_.Context.DisplayPreContext} | Out-String
Send-MailMessage (email_info_here) -Body $body
} else {
Write-Host "No errors found"
}
当前返回以下字符串:
信息 |为 197988 创建批次 | 2016 年 3 月 24 日凌晨 02:10 信息 |为 202414 创建批次 | 2016 年 3 月 24 日凌晨 02:10 信息 |为 173447 创建批次 | 03/24/2016 02:10 AM
希望输出格式为:
197988, 202414, 173447
【问题讨论】:
-
目前,在创建 $body 时,您似乎正在推动通过
Out-String找到的所有行。我建议省略Out-String部分,它应该将 $body 保留为数组而不是多行字符串。下面的一些答案在数组上效果更好(尤其是使用foreach循环遍历每一行)。
标签: string powershell substring select-string