问题标签 [select-string]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2765 浏览

powershell - 使用 PowerShell 的 type -wait 和 select-string 来实时监控应用程序日志的条件并执行操作(如 tail -f 或 watch)

我正在尝试使用 PowerShell 的type -wait命令在 Windows 上以与在 Linux 上使用相同的方式实时监控日志文件tail -f,并且我想将文件通过管道传输到另一个命令 - select-string,比如grep- 这将触发基于 a 的操作健康)状况。在 Linux 上,我会用它watch来完成我想做的事情。

"You caught a critter!"在以下示例中,每当包含 string 的新行"status=Caught"写入日志文件时,我都会尝试打印该短语。

请注意,-quiet该命令的参数select-string返回True. 实际上,在这个例子中,它只返回True一次,当我第一次运行命令时,因为日志文件有包含字符串的现有行"status=Caught"

我确实需要以某种方式忽略现有的字符串(或者,例如,旋转日志文件),但现在,问题是我需要 PowerShell 脚本不仅继续跟踪文件,而且我还需要它继续评估写入文件的每个新行是否包含给定的字符串。然后,如果字符串存在,我需要执行任意操作,例如打印一行;否则,继续收听字符串。

以下帖子表明该-wait参数是Get-Contentcmdlet 的一个选项:如何实时监视 Windows 日志文件? . 我不确定我是否应该期望-wait使用foreach循环,如本文所述:在 Powershell 中,我可以在 foreach 语句中使用 select-string -quiet 开关

如何修改上述 PowerShell 脚本以跟踪日志文件并使用给定字符串对每个新行执行操作,并继续跟踪文件并在编写新行时对其进行评估?

0 投票
1 回答
6098 浏览

powershell - Select-String 因搜索词包含特殊字符而失败

当我运行时:

我收到一条错误消息,指出字符串“不是有效的正则表达式”

相比之下,它在$SearchStr不包含特殊字符时工作正常。

为什么它不适用于特殊字符,例如\

0 投票
1 回答
180 浏览

split - Grep - PowerShell 风格

在我“grep”它之后,我很难让 PowerShell 拆分一个字符串。我真的很想从每小时的网络日志中获得 10 个最大值。

“Grep”有效,但我无法拆分它:

PS D:\Work\ps> D:\Work\ps\test\grep.ps1 方法调用失败,因为 [Microsoft.PowerShell.Commands.MatchInfo] 不包含名为“split”的方法。在 D:\Work\ps\test\grep.ps1:8 char:2 + $string.split($separator,0, $option) + ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound

https://communary.net/2014/11/10/grep-the-powershell-way/ https://blogs.technet.microsoft.com/heyscriptingguy/2014/07/17/using-the-split-method-在powershell/

重要的是要注意:我已经逃脱了:'执行:'我尝试过的几件事:

也:

谢谢!

0 投票
1 回答
1150 浏览

powershell - Select-String -Pattern 管道输入时的输出

我尝试让 PowerShell 吐出一个语义版本控制变量,但卡在其中只显示我输入的命令(在 ISE 中执行此操作)或 2 个错误(“缺少参数”或“不接受管道输入”) ,如果我尝试解决它们,则以再次显示的命令结束。

我怎么得到这个:

假设正则表达式和网络请求指向可靠的东西以简单地将搜索的术语粘贴在-OutVariable定义中?


更笼统地说,有没有一种好方法可以显示管道中对象的属性?经过大量的挖掘,我偶然发现,{$_}但如果命令变得比简单的 cmdlet 更复杂一点,则无法让它再次显示命令以外的任何内容。

0 投票
2 回答
9675 浏览

string - PowerShell:选择匹配前的行——使用输入字符串变量时的 Select-String -Context 问题

我需要在多行字符串变量的匹配之前返回一行。

似乎在对输入使用字符串变量时 Select-String 认为整个字符串已匹配。因此,上下文属性在字符串的任一端“外部”并且为空。

考虑下面的例子:

我在这里误解了什么吗?

匹配“line3”时返回“line2”的最佳方式是什么?

谢谢!

编辑:我忽略说明的附加要求:需要在所有匹配行上方提供不确定长度的字符串。EG 在下面搜索“line3”时,我需要返回“line2”和“line5”。

0 投票
2 回答
12246 浏览

powershell - Powershell中的Select-String仅显示文本文件中的部分行,需要它来显示整个内容

我正在尝试编写一个简单的 PS 脚本来检查大型 .txt 日志文件中的短字符串:“SRVE0242I:”

但在输出时,它只显示以下内容:

线
[28/06/17 13:48:27:839] 00000020 ServletWrappe I SRVE0242I: [用户] [用户] [com_xxxxxxx_...

而不是全线。这个拉多少字符有限制吗?我找不到有关 Select-String cmdlet 的任何限制的任何信息。有没有更好的方法来做到这一点,这样我就不会 a)在我的行列表中拉出标题“行”(真的不想为这样一个简单的输出创建表格格式)和 b)得到整行当我拉信息?

0 投票
2 回答
1028 浏览

powershell - 从 Invoke-Command 返回带有上下文的 Select-String 结果(显示为空白)

我正在尝试使用 Invoke-Command 在多个服务器上搜索日志文件并返回带有上下文的结果,但我没有成功。

这是命令:

这将返回一个反序列化的 MatchInfo 对象,其中删除了大多数信息。

如何获得类似于在本地运行 Select-String 的结果?

这是在我的主目录中使用与示例相同的上下文设置在 svg 上运行 sls 的结果:

0 投票
1 回答
106 浏览

regex - 将文件中的关键字(模式)与多个文件匹配

抱歉标题晦涩难懂,这是我的问题和我想做的事情。

我的文件:

我有“keywords.txt”,其中包含很多我想与“textfile1.txt”匹配的关键字(字符串)等等,并收到包含匹配项的文件名的答案。

即递归搜索\mydir\ 中的所有.txt 文件,并使用文件“keywords.txt”的内容作为关键字进行搜索。

Get-Content默认情况下将值作为数组返回,Out-String应将其转换为字符串。

感谢所有帮助!

0 投票
0 回答
768 浏览

arrays - Powershell 选择字符串-上下文

我有一个文本文件,我需要读取模式之间的行并包含模式匹配。

例子:

现在我有:

它将属性和接下来的 3 行返回到一个数组条目中。但是,我希望这是动态的,而不是特别是接下来的 3 行。我想要所有行,直到下一个属性模式。

0 投票
1 回答
430 浏览

select-string - 使用 Select-String (PowerShell) 从错误文件中查找单词

我有以下代码

它输出:

错误文件有 VirtualMachine-vm-12345 但会改变,所以我需要找到不完全匹配的。