Artifacts/windows-iis/artifact.ps1 (33 lines of code) (raw):

$artifactLogFolder = Join-path -path $env:ProgramData -childPath 'DTLArt_IIS' New-Item -ItemType Directory -Force -Path $artifactLogFolder $winVerString = (Get-WmiObject Win32_OperatingSystem).Caption Write-Output "Detected Windows Version: $winVerString" $scriptFolder = Split-Path $Script:MyInvocation.MyCommand.Path if ($winVerString -like 'Microsoft Windows Server 2008 R2*' -or $winVerString -like 'Microsoft Windows Server 2012*'){ Write-Output 'Installing IIS on Windows Server 2008 R2 or 2012' $localLog = Join-Path $artifactLogFolder 'IISArtifact.log' $pkgMgrExe = join-path $env:windir system32\pkgmgr.exe $packages = 'IIS-WebServerRole;IIS-WebServer;IIS-IIS6ManagementCompatibility;IIS-Metabase;IIS-WMICompatibility;IIS-LegacyScripts;IIS-LegacySnapIn' $pkgMgrArgs = "/l:$localLog /iu:$packages" $pkgMgrProcess = Start-Process -FilePath $pkgMgrExe -ArgumentList $pkgMgrArgs -Wait -PassThru if($pkgMgrProcess.ExitCode -eq 0){ Write-Output 'Successfully installed IIS' } elseif($pkgMgrProcess.ExitCode -eq 3010){ Write-Output 'IIS install is finished. A reboot is required.' } else{ Write-Error ('Failed to import IIS. Exit code is ' + $pkgMgrProcess.ExitCode.ToString()) } } elseif ($winVerString -like 'Microsoft Windows Server 2016*' -or $winVerString -like 'Microsoft Windows Server 2019*'){ Write-Output 'Installing IIS on Windows Server 2016 or 2019' Install-WindowsFeature -name Web-Server -IncludeManagementTools } elseif ($winVerString -like 'Microsoft Windows 10*' -or $winVerString -like 'Microsoft Windows 8.1*'){ Write-Output 'Installing IIS on Windows 8.1 or Windows 10' Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole } else { Write-Error "This script does not support Windows version $winVerString" }