Check-XmlFiles
Checks all XML files in a directory tree
param([string]$path = "$PWD")
try {
$stopWatch = [system.diagnostics.stopwatch]::startNew()
$path = Resolve-Path "$path"
[int]$valid = [int]$invalid = 0
Get-ChildItem -path "$path" -attributes !Directory -recurse -force | Where-Object { $_.Name -like "*.xml" } | Foreach-Object {
& $PSScriptRoot/check-xml-file.ps1 "$($_.FullName)"
if ($lastExitCode -eq 0) { $valid++ } else { $invalid++ }
}
[int]$elapsed = $stopWatch.Elapsed.TotalSeconds
if ($invalid -ne 0) {
"?? $invalid XML files are INVALID, $valid are valid (took $($elapsed)s)."
} else {
"? All $valid XML files are valid (took $($elapsed)s)."
}
exit 0 # success
} catch {
"?? ERROR: $($Error[0]) (script line $($_.InvocationInfo.ScriptLineNumber))"
exit 1
}Specifies the file path to the directory tree (current working dir by default)