matching zone on IISsettings
$webApps = Get-SPWebApplication
$path = 'C:\Windows\System32\inetsrv\config\applicationHost.config'
$xml = [xml](Get-Content -Path $path)
if($webApps -ne $null -and $xml -ne $null)
{
foreach($webApp in $webApps)
{
foreach($zone in $webApp.IisSettings.keys)
{
$node = $xml.SelectSingleNode("/configuration/system.applicationHost/sites")
if($node -ne $null)
{
$site = $node.site | ?{$_.Id -eq $webApp.IisSettings[$zone].PreferredInstanceId}
if($site -eq $null)
{
'IIS Site not found. Provisioning web app: {0}' -f $webApp.DisplayName | Out-Host
$webApp.Provision()
}
elseif((Test-Path -Path $webApp.IisSettings[$zone].Path) -eq $false)
{
'Path not found. Provisioning web app: {0}' -f $webApp.DisplayName | Out-Host
$webApp.Provision()
}
}
}
}