Purpose
This script will create an application pool if its does not exists and a virtual directory for the site using PowerShell.Scenario
Suppose we have a website(in this case we have test.maulikdhorajia.com). And we have to create 100 virtual directories in the same website with same structure. But some Virtual Directories are already there and some needs to be created. Some of them uses framework 2.0 and some 4.0. Some of them are having 32 bit enabled and some of them don't need it. Using this script we can do it with saving a lot of time in doing manual process.### Author : Maulik Dhorajia ### Purpose : This script will create an application pool if its doesnot exists and will create a virtual directory for the site using PowerShell. # IMPORT WebAdministration Module Import-Module WebAdministration # Current Folder Declarations $currentFolder = Split-Path -parent $MyInvocation.MyCommand.Definition write-host "Folder name : " $currentFolder # Create a virtual directory and application pool using PowerShell. function CreateAppPoolAndVirtualDirectory( $iisAppPoolName, $iisAppPoolDotNetVersion , $iisAppName, $enable32Bit) { # Set up the directory path $directoryPath = "$currentFolder\$iisAppName" Write-Host "Path: $directoryPath" # Validation if(($iisAppPoolName -eq $null) -or ($iisAppPoolName -eq "")) { Write-Host "AppPool name is required." -foregroundcolor "Red" return } if(($iisAppName -eq $null) -or ($iisAppName -eq "")) { Write-Host "Application name is required." -foregroundcolor "Red" return } if(($directoryPath -eq $null) -or ($directoryPath -eq "")) { Write-Host "Directory path is required." -foregroundcolor "Red" return } # Conditional Missing Records if(($iisAppPoolDotNetVersion -eq $null) -or ($iisAppPoolDotNetVersion -eq "")) { $iisAppPoolDotNetVersion = "v4.0" } # Navigate to the app pools root cd IIS:\AppPools\ # Check if the app pool exists if (!(Test-Path $iisAppPoolName -pathType container)) { #create the app pool $appPool = New-Item $iisAppPoolName # Assign App Pool Version $appPool | Set-ItemProperty -Name "managedRuntimeVersion" -Value $iisAppPoolDotNetVersion # Enable 32-Bit "True" or "False" $appPool | Set-ItemProperty -Name "enable32BitAppOnWin64" -Value $enable32Bit Write-Host "$iisAppPoolName : Pool created successfully." -foregroundcolor "green" } #navigate to the sites root cd IIS:\Sites\ # IIS Site $iissite = "iis:\sites\test.maulikdhorajia.com\$iisAppName" $subSite = Get-ChildItem "iis:\sites\test.maulikdhorajia.com\" | ? {$_.Name -eq $iisAppName -and $_.Type -eq "application"} if( $subSite -eq $null) { # Create the app $iisApp = New-Item $iissite -type Application -physicalPath $directoryPath Set-ItemProperty $iissite -Name "applicationPool" -Value $iisAppPoolName Write-Host $iisAppName " : Application created successfully." -foregroundcolor "green" } else { Write-Host $iisAppName " : Application already exists!" -foregroundcolor "DarkMagenta" } } # CREATE VIRTUAL DIRECTORY CreateAppPoolAndVirtualDirectory "Site1_AppPool" "" "Site1" "FALSE" CreateAppPoolAndVirtualDirectory "Site2_AppPool" "v4.0" "Site2" "FALSE" # USE FRAMEWORK 2.0 CreateAppPoolAndVirtualDirectory "Site3_AppPool" "v2.0" "Site3" "FALSE" # ENABLE 32 BIT ON APP POOL CreateAppPoolAndVirtualDirectory "Site4_AppPool" "v4.0" "Site4" "TRUE" # SAME APP POOL NAME CreateAppPoolAndVirtualDirectory "Site1_AppPool" "v4.0" "Site5" "FALSE" write-Host "End of script"