Skip to content

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)

An interactive directory of PowerShell scripts.