Creating an IIS 6.0 Application Pool using Powershell Creating an IIS 6.0 Application Pool using Powershell powershell powershell

Creating an IIS 6.0 Application Pool using Powershell


Thought I might share the script I came up with. Thanks to goes to Steven and leon.

# Settings$newApplication = "MaxSys.Services"$poolUserName = "BRISBANE\svcMaxSysTest"$poolPassword = "ThisisforT3sting"$newVDirName = "W3SVC/1/ROOT/" + $newApplication$newVDirPath = "C:\" + $newApplication$newPoolName = $newApplication + "Pool"#Switch the Website to .NET 2.0C:\windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -sn W3SVC/# Create Application Pool$appPoolSettings = [wmiclass] "root\MicrosoftIISv2:IISApplicationPoolSetting"$newPool = $appPoolSettings.CreateInstance()$newPool.Name = "W3SVC/AppPools/" + $newPoolName$newPool.PeriodicRestartTime = 0$newPool.IdleTimeout = 0$newPool.MaxProcesses = 2$newPool.WAMUsername = $poolUserName$newPool.WAMUserPass = $poolPassword$newPool.AppPoolIdentityType = 3$newPool.Put()# Do it again if it fails as there is a bug with Powershell/WMIif (!$?) {    $newPool.Put() }# Create the virtual directorymkdir $newVDirPath$virtualDirSettings = [wmiclass] "root\MicrosoftIISv2:IIsWebVirtualDirSetting"$newVDir = $virtualDirSettings.CreateInstance()$newVDir.Name = $newVDirName$newVDir.Path = $newVDirPath$newVDir.EnableDefaultDoc = $False$newVDir.Put()# Do it a few times if it fails as there is a bug with Powershell/WMIif (!$?) {    $newVDir.Put() }# Create the application on the virtual directory$vdir = Get-WmiObject -namespace "root\MicrosoftIISv2" -class "IISWebVirtualDir" -filter "Name = '$newVDirName'"$vdir.AppCreate3(2, $newPoolName)# Updated the Friendly Name of the application$newVDir.AppFriendlyName = $newApplication$newVDir.Put()


It isn't the most obvious process, but here is what worked for me..

$AppPoolSettings = [wmiclass]'root\MicrosoftIISv2:IISApplicationPoolSetting'$NewPool = $AppPoolSettings.CreateInstance()$NewPool.Name = 'W3SVC/AppPools/MyAppPool'$Result = $NewPool.Put()

You might get an error with the call to Put(), but calling it a second (or third) time should make it work. This is due to an issue with PowerShell V1 and WMI.


All is well! I modified the code so there is an explicit call to the $newPool.Put() command after the initial error. Thanks for your help!