我正在尝试使用Powershell 6中的Test-Json Cmdlet验证文件夹中的所有json文件:
[array]$myFiles=Get-ChildItem *.json -Recurse| select -expand fullname
foreach ($filePath in $myFiles)
{
try {
$isValid = Get-Content $filePath -Raw | Test-Json
$working = $true
} catch {
$working = $false
}
if ($working) {
Write-Host "Is working for $filePath"
}
else {
Write-Host "Not working for $filePath"
}
}
如果json文件不正确,则cmdlet Test-json会显示一个错误,该错误引用的是.ps1文件而不是.json文件,因此与$ filePath一起使用“正在使用”或“不适用于”。
但是,无论json文件是否正确,对于所有json文件都说“正在使用”。因此,如果我可以让Test-Json显示错误的json文件而不是.ps1文件,则我需要“正在工作” /“不在工作”才能正常工作甚至更好。
请帮助吗?
[我正在尝试使用Powershell 6中的Test-Json Cmdlet验证文件夹中的所有json文件:[array] $ myFiles = Get-ChildItem * .json -Recurse |选择-expand全名foreach($$中的$ filePath)]
问题出在使用Test-Json
。
根据您的代码片段,您似乎假设,如果JSON格式不正确,则将引发错误。情况并非如此。Test-Json
cmdlet仅在使用-Schema
开关时才引发错误。 Visit here for more information。