Configure Application Pool for a Sepcific User on IIS7

Share your PowerShell scripts for Deployment Manager

Moderators: Mike Upton, justin.caldicott, csmith, chirayu, DavidSimner

Configure Application Pool for a Sepcific User on IIS7

Postby Emma A » Thu Sep 19, 2013 1:12 pm

Script to change an application Pool to be run as a specific user

Brief notes on how to use this script:
    Add $appPoolId variable to the Deplopyment Manager project and give it the name of the application pool you want to change e.g. applicationPoolName or $(RedGateCreateWebSiteApplicationPool) if you are creating the application pool so they have the same value.
    Add $appPoolUsername variable which is the name and domain of the person you want to run as e.g. Domain\\Username
    Add $appPoolPassword - the password for the username you specified above.


Code: Select all
#variable $appPoolId - the applicationpoolIdentity you want to change
#variable $appPoolUsername - the name and domain of the person you want to run as e.g. Domain\\Username
#variable $appPoolPassword - the password for the username you specified above.

# Search for Microsoft.Web.Administration.dll in file system
$directoryToSearch = $env:systemroot
Write-Host "Searching for Microsoft.Web.Administration.dll in '$directoryToSearch'..."
$webDllDirectory = Get-ChildItem -Path $directoryToSearch -Filter Microsoft.Web.Administration.dll -Recurse -ErrorAction 'silentlycontinue' `
               | where { $_.DirectoryName.Contains("SysWOW64") -or $_.DirectoryName.Contains($env:windir + "\\assembly")} `
               | select -First 1

if ($webDllDirectory -eq $null)
{
   throw "Could not find 'Microsoft.Web.Administration.dll'. It is required to start/stop '$websiteToStartOrStop' website."
}

# Load the dll (console output of the command is deleted)
[System.Reflection.Assembly]::LoadFrom($webDllDirectory.DirectoryName.toString() + "\\Microsoft.Web.Administration.dll") | Out-Null
$serverManager = new-object Microsoft.Web.Administration.ServerManager

# From all sites, select the site we want to start
$appPool = $serverManager.ApplicationPools[$appPoolId]
if ($appPool -eq $null) {
   # Fail the script and exit if cannot find the applicationpool
   throw "Could not find application pool with name: $appPool"
}

#Update the application pool to run as a specific user.
$appPool.ProcessModel.IdentityType="3"; #identityType 3 is SpecificUser
$appPool.ProcessModel.UserName = $appPoolUsername;
$appPool.ProcessModel.Password = $appPoolPassword;

$serverManager.CommitChanges();

Emma A
 
Posts: 40
Joined: Mon Mar 30, 2009 2:53 pm

Return to Deployment Manager PowerShell Scripts

Who is online

Users browsing this forum: No registered users and 0 guests