PowerShell 5.1.26100.6899中Select-string -path忽略ErrorAction的解决办法
解决Select-String中-ErrorAction参数对不存在文件失效的问题
问题原因
Select-String的-Path参数在遇到不存在的文件时,抛出的错误属于参数绑定阶段的非终止错误,这个阶段的错误不会被命令自身的-ErrorAction参数捕获(因为命令还未正式执行),所以即使加了-ErrorAction SilentlyContinue,仍然会显示文件未找到的错误。
单行命令解决方法
方法1:先验证文件存在再执行检查
通过Test-Path先确认文件存在,再调用Select-String:
if (Test-Path "C:\temp\Test.txt") { Select-String -Path "C:\temp\Test.txt" -Pattern "123 - Test" }
方法2:通过Get-Content传递内容(推荐)
利用Get-Content的-ErrorAction参数捕获文件不存在的错误,再将内容管道传递给Select-String:
Get-Content "C:\temp\Test.txt" -ErrorAction SilentlyContinue | Select-String -Pattern "123 - Test"
这种方法更简洁,且能直接利用-ErrorAction抑制错误,同时保留Select-String的匹配功能。
内容的提问来源于stack exchange,提问作者user66001
相关产品推荐
相关产品推荐

