问题标签 [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.
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 作为过滤器,以确保仅将新错误添加到警报中。如果我的方法不是最佳实践,我愿意使用其他方法。
powershell - 选择字符串转义字符
我正在尝试在目录中搜索c:\bats\
包含 unc 路径的批处理文件\\server\public
命令:
我收到与字符串相关的错误\\server\public
:
我尝试过使用各种转义符,例如"\server\public"
or"'\server\public'"
但我总是收到同样的错误。
windows - PowerShell 布尔表达式
我正在编写一个 powershell 脚本,但在评估布尔表达式时遇到问题。
这是我遇到问题的代码行:
尝试运行时收到此错误消息:
请帮助我理解这个问题。
同样对于一点上下文,我正在文件中搜索一个字符串,如果它不存在,我想执行 if 块中的内容。我没有将代码粘贴到 if 语句中,因为我认为它不相关,但如果您想查看它,请告诉我。
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 }
无论如何,认为这可能会有所帮助:
regex - Powershell 获取成员输出失败
我正在尝试使用 Regex 从ProductName
. 我得到的只是一个空字符串。
.net - Select-String 如何读取文本文件内容?按块?
我想知道如何Select-String
读取文件内容?
它是先将内容加载到内存中还是分块读取内容?
(我对此感到好奇的原因是因为我想知道是否Select-String
会根据其实现创建过多的 I/O 负载)
谢谢
powershell - Powershell根据参数在文件中搜索字符串
我有一个包含多个单词的文件。我只想得到那些包含我作为参数传递给程序的字母的单词。
例如:test.txt
./select.ps1 test.txt oer
结果应该是这样的:
我写了这个:
但是如果我想使用例如 10 个参数并且不想一直更改我的代码怎么办?我将如何管理?
powershell - 定制选择字符串输出。
我有一个看起来像这样的文本文件日志
我有一个脚本是
我不记得如何让它只显示数字。
有什么建议么?
regex - 如何使选择字符串仅匹配 6 个字符长的记录?
我正在创建一个脚本来读取文本文件并将结果与数组进行比较。它工作正常,但我有一些记录说它们匹配但它们不匹配。
例如 -TG1032
并TG
根据select-string
脚本匹配。
这是我的select-string
:
有没有办法改变它以使选择字符串只匹配 6 个字符长的记录?
powershell - 从输出中删除路径
在 PowerShell 中使用以下Select-String
命令:
创建一个输出文件,每行以路径和文件名开头,后跟一个冒号。例如:
如何去掉结果中的输出文件路径名、输出文件名和冒号?