问题标签 [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 回答
1147 浏览

powershell-3.0 - Powershell:如何使用 -Exclude 对另一个文件中的多行文本进行 Select-String 搜索

项目:我有一个正在不断添加的日志文件。在此日志文件中,有时会添加一个错误(错误始终包括“无法导入”和唯一 ID)。当此错误添加到日志文件时,我需要通过电子邮件收到警报。

项目的当前状态:我有脚本(它计划每 15 分钟运行一次)使用 Select-String 扫描日志文件,如果发现此错误,则将其添加到名为 alert-(Get -日期).txt。在 PS 脚本结束时,alert.txt 文件会通过电子邮件发送给我。

问题:每天都会创建一个新的日志文件,因此我的脚本只扫描该文件。问题是一旦发现错误,每次后续扫描都会向我发送我已经知道的错误的警报。我希望后续警报仅包含新错误。

当前解决问题的尝试 以下是日志文件中的示例错误:

我已在脚本中添加了在日志文件中提取错误的唯一 ID 的方法。在本例中为 2785。此 ID 和其他错误 ID 被添加到另一个文本文件名 oldAlerts.txt。所以内容看起来像这样:

我想在我的脚本中添加一种方法来为 Select-String 结果排除这些行。到目前为止,这是我的 Select-String:

如何使用 oldAlert.txt 文件中的 ID 作为过滤器,以确保仅将新错误添加到警报中。如果我的方法不是最佳实践,我愿意使用其他方法。

0 投票
2 回答
13588 浏览

powershell - 选择字符串转义字符

我正在尝试在目录中搜索c:\bats\包含 unc 路径的批处理文件\\server\public

命令:

我收到与字符串相关的错误\\server\public

我尝试过使用各种转义符,例如"\server\public"or"'\server\public'"但我总是收到同样的错误。

0 投票
2 回答
637 浏览

windows - PowerShell 布尔表达式

我正在编写一个 powershell 脚本,但在评估布尔表达式时遇到问题。

这是我遇到问题的代码行:

尝试运行时收到此错误消息:

请帮助我理解这个问题。

同样对于一点上下文,我正在文件中搜索一个字符串,如果它不存在,我想执行 if 块中的内容。我没有将代码粘贴到 if 语句中,因为我认为它不相关,但如果您想查看它,请告诉我。

0 投票
2 回答
19026 浏览

powershell - PowerShell 在变量与文件上运行 Select-String

我正在尝试使用 PowerShell 脚本从 ipconfig 的输出中提取我的本地网络 IP 地址。我已经使用临时输出文件让它工作,但想消除该步骤,只在脚本中使用一个变量。我无法弄清楚为什么不使用临时输出文件的脚本不起作用。任何帮助将非常感激。

这是两个脚本。首先,工作版本:

现在几乎相同但仅使用变量的非工作版本:

我正在使用 select-string 来查找包含“IPv4”的行,这些行通过管道传输到另一个对 select-string 的调用中,以消除包含我的虚拟机 IP 地址的行。如果我在非工作脚本的第 6 行启用测试输出并将其与工作脚本中的“tmp.txt”文件进行比较,我可以看到到目前为止,两个脚本的工作方式相同。

此外,两个脚本中的第 10-15 行是相同的。所以我相信唯一有问题的行是#8。

我已经尝试了所有我能想到的方法,但总是得到相同的结果(“IPv4”而不是 IP 地址) 第一个脚本按预期工作并给了我 IP。

这两个选项似乎都应该起作用(并且可能是我尝试过的所有选项中最合乎逻辑的),但都没有给我 IP:

我什至尝试消除所有额外的步骤,只制作一个像这样的长管道:

并像这样复制到剪贴板:

但似乎没有任何效果。

我在哪里做错了?

谢谢!


更新 2015 年 3 月 13 日下午 6:30

我正在运行 Windows 7 64 位

这是 $PSVersionTable 的输出:

名称 值
---- -----
CLRVersion 2.0.50727.5485
BuildVersion 6.1.7601.17514
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1

是的,我的最终目标只是获得 IP。真的,我只是想找到一种快速的方法来做到这一点。我想我在技术上并不需要 IP 本身来用于我使用它的目的,但是一旦我进入它,我就非常着迷于试图解决剩下的问题,只是出于好奇。

感谢所有的帮助!

在休息了大约 10 年之后,我才重新开始编码,而且我已经超级生疏了。

我不确定为什么我的非工作版本对我有用,如果它对你有用。当我运行它时,我在弹出窗口和剪贴板上得到“IPv4”,而不是IP(我在使用临时文件的工作版本中得到。

我将把这些正则表达式更改集成到我当前的脚本中,并使用你的 gwmi 解决方案,Matt。初始运行对我没有任何回报,但我会玩弄它并让你知道。

让我知道您是否有更多的想法,为什么根据这些更新的信息,带有变量的版本在我的端不能正常工作。这对我来说完全莫名其妙。

再次感谢!


更新 2015 年 3 月 13 日晚上 10:27

这是更新后 $PSVersionTable 的输出:

名称 值
---- -----
PSVersion 4.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion
4.0.30319.18444 BuildVersion 6.3.9600.16406
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion 2.2


如果我在 PowerShell 中逐段运行管道命令,会发生以下情况。如您所见,它似乎在第 14 行中断:$ipAddress = $ipAddress | % { $_.Matches }

无论如何,认为这可能会有所帮助:

0 投票
1 回答
181 浏览

regex - Powershell 获取成员输出失败

我正在尝试使用 Regex 从ProductName. 我得到的只是一个空字符串。

0 投票
1 回答
232 浏览

.net - Select-String 如何读取文本文件内容?按块?

我想知道如何Select-String读取文件内容?

它是先将内容加载到内存中还是分块读取内容?

(我对此感到好奇的原因是因为我想知道是否Select-String会根据其实现创建过多的 I/O 负载)

谢谢

0 投票
3 回答
587 浏览

powershell - Powershell根据参数在文件中搜索字符串

我有一个包含多个单词的文件。我只想得到那些包含我作为参数传递给程序的字母的单词。

例如:test.txt

./select.ps1 test.txt oer

结果应该是这样的:

我写了这个:

但是如果我想使用例如 10 个参数并且不想一直更改我的代码怎么办?我将如何管理?

0 投票
4 回答
2065 浏览

powershell - 定制选择字符串输出。

我有一个看起来像这样的文本文件日志

我有一个脚本是

我不记得如何让它只显示数字。

有什么建议么?

0 投票
1 回答
584 浏览

regex - 如何使选择字符串仅匹配 6 个字符长的记录?

我正在创建一个脚本来读取文本文件并将结果与​​数组进行比较。它工作正常,但我有一些记录说它们匹配但它们不匹配。

例如 -TG1032TG根据select-string脚本匹配。

这是我的select-string

有没有办法改变它以使选择字符串只匹配 6 个字符长的记录?

0 投票
6 回答
19932 浏览

powershell - 从输出中删除路径

在 PowerShell 中使用以下Select-String命令:

创建一个输出文件,每行以路径和文件名开头,后跟一个冒号。例如:

如何去掉结果中的输出文件路径名、输出文件名和冒号?