PowerShell获得所有错误,而不仅仅是第一个

4sup72z8  于 2022-11-10  发布在  Shell
关注(0)|答案(1)|浏览(141)

我有一个这样的命令:

(($remoteFiles | Where-Object { -not ($_ | Select-String -Quiet -NotMatch -Pattern '^[a-f0-9]{32}(  )') }) -replace '^[a-f0-9]{32}(  )', '$0=  ' -join "`n") | ConvertFrom-StringData

有时它会抛出一个

ConvertFrom-StringData : Data item 'a3512c98c9e159c021ebbb76b238707e' in line 'a3512c98c9e159c021ebbb76b238707e  =  My Pictures/Tony/Automatic Upload/Tony’s iPhone/2022-10-08 21-46-21 (2).mov' 
is already defined.

但我相信还有更多错误,错误只在第一次出现时抛出,有没有方法可以获得所有错误,以便我可以对它们采取行动?

fcipmucu

fcipmucu1#

有没有办法得到所有的错误
我恐怕没有*,因为ConvertFrom-StringData在遇到问题时报告的是一个语句终止错误,这意味着它立即中止执行,而不考虑进一步的输入。
您必须对输入执行您自己的分析,以检测多个问题,例如重复键;例如:

@'
a = 1
b = 2
a = 10
c = 3
b = 20
'@ | ForEach-Object {
  $_ -split '\r?\n' |
    Group-Object { ($_ -split '=')[0].Trim() } |
    Where-Object Count -gt 1 |
    ForEach-Object {
      Write-Error "Duplicate key: $($_.Name)"
    }
}

产出:

Write-Error: Duplicate key: a
Write-Error: Duplicate key: b

相关问题