IISSetup.ps1 (67 lines of code) (raw):
$iis = Get-Service W3svc -ErrorAction Ignore
if($iis){
if($iis.Status -eq "Running") {
Write-Host "World Wide Web Publishing is running"
}
else {
Write-Host "World Wide Web Publishing is not running"
exit 1
}
}
else {
Write-Host "World Wide Web Publishing not installed"
exit 1
}
Write-Host "Configuring IIS"
$currentDirectory = (Get-Item -Path ".\").FullName
$iisAppName = "passcore"
$iisAppPort = "8080"
$iisAppPoolName = "Passcore Pool PS"
$iisAppPoolDotNetVersion = ""
$iisAppPoolStartMode = "AlwaysRunning"
#the directory where you will be serving the website from
$directoryPath = (Get-Item -Path $args[0]).FullName
try {
Import-Module WebAdministration
#navigate to the app pools root
Set-Location IIS:\AppPools\
#check if the app pool exists
if (!(Test-Path $iisAppPoolName -pathType container))
{
Write-Host "Creating $($iisAppPoolName)"
#create the app pool
$appPool = New-Item $iisAppPoolName
$appPool | Set-ItemProperty -Name "managedRuntimeVersion" -Value $iisAppPoolDotNetVersion
$appPool | Set-ItemProperty -Name "startMode" -value $iisAppPoolStartMode
}
#navigate to the sites root
Set-Location IIS:\Sites\
#check if the site exists
if (Test-Path $iisAppName -pathType container)
{
Write-Host "The site $($iisAppName) already exist"
exit 1
}
Write-Host "Creating $($iisAppName) on IIS"
#create the site
$iisApp = New-Item $iisAppName -bindings @{protocol="http";bindingInformation="*:$($iisAppPort):"} -physicalPath $directoryPath
$iisApp | Set-ItemProperty -Name "applicationPool" -Value $iisAppPoolName
$site = Get-Website $iisAppName
Get-IISAppPool $iisAppPoolName
$site
if(!$site) {
Write-Host "No site was created"
exit 1
}
Start-WebAppPool -Name $iisAppPoolName
Start-Website -Name $iisAppName
$request = Invoke-WebRequest -Uri "http://localhost:$($iisAppPort)"
if ($request.StatusCode -ne 200) {
Write-Host "HTTP Error"
exit 1
}
Write-Host "Website request status: $($request.StatusCode)"
}
finally {
Set-Location $currentDirectory
}