Fix #1099: Only populate site result when it is there

This commit is contained in:
Brian Geihsler 2015-10-14 00:33:28 -07:00 committed by Matt Clay
parent 002fc53863
commit 2f6f6cedf8

View file

@ -102,8 +102,8 @@ Try {
If ($bind_hostname) { If ($bind_hostname) {
$site_parameters.HostHeader = $bind_hostname $site_parameters.HostHeader = $bind_hostname
} }
# Fix for error "New-Item : Index was outside the bounds of the array." # Fix for error "New-Item : Index was outside the bounds of the array."
# This is a bug in the New-WebSite commandlet. Apparently there must be at least one site configured in IIS otherwise New-WebSite crashes. # This is a bug in the New-WebSite commandlet. Apparently there must be at least one site configured in IIS otherwise New-WebSite crashes.
# For more details, see http://stackoverflow.com/questions/3573889/ps-c-new-website-blah-throws-index-was-outside-the-bounds-of-the-array # For more details, see http://stackoverflow.com/questions/3573889/ps-c-new-website-blah-throws-index-was-outside-the-bounds-of-the-array
$sites_list = get-childitem -Path IIS:\sites $sites_list = get-childitem -Path IIS:\sites
@ -171,15 +171,21 @@ Catch
Fail-Json (New-Object psobject) $_.Exception.Message Fail-Json (New-Object psobject) $_.Exception.Message
} }
$site = Get-Website | Where { $_.Name -eq $name } if ($state -ne 'absent')
$result.site = New-Object psobject @{ {
Name = $site.Name $site = Get-Website | Where { $_.Name -eq $name }
ID = $site.ID
State = $site.State
PhysicalPath = $site.PhysicalPath
ApplicationPool = $site.applicationPool
Bindings = @($site.Bindings.Collection | ForEach-Object { $_.BindingInformation })
} }
if ($site)
{
$result.site = New-Object psobject @{
Name = $site.Name
ID = $site.ID
State = $site.State
PhysicalPath = $site.PhysicalPath
ApplicationPool = $site.applicationPool
Bindings = @($site.Bindings.Collection | ForEach-Object { $_.BindingInformation })
}
}
Exit-Json $result Exit-Json $result