Beheren van IIS App Pools: Een PowerShell Tutorial

Heb je behoefte om je IIS-webserver-app-pools in de gaten te houden? Hier is een handleiding over hoe je een toepassingspool kunt maken in IIS met PowerShell.

Waar ga je naartoe als je een IIS-webserverfarm beheert met mogelijk tientallen of honderden app-pools? PowerShell-scripts natuurlijk! Door de WebAdministrationPowerShell-module te gebruiken die wordt geïnstalleerd als onderdeel van IIS en een beetje PowerShell-remotebeheer kun je eenvoudig app-pools aanmaken, wijzigen en verwijderen naar wens.

Laten we enkele voorbeelden doornemen over hoe je dat voor elkaar kunt krijgen.

Als je nog nooit PowerShell hebt gebruikt om je IIS-servers te beheren, is je eerste neiging misschien om naar een ComputerName te zoeken bij de meeste cmdlets. Helaas is dit niet het geval.

Om IIS-servers op afstand te beheren, zijn we gedwongen PowerShell-remotebeheer te gebruiken met het Invoke-Command-cmdlet. Hoewel dit geen dealbreaker is, maakt het de code iets omslachtiger dan het zou kunnen zijn. Dit is niet bedoeld om je af te schrikken van het beheren van externe IIS-servers met PowerShell, maar meer als informatie.

Gerelateerd: Invoke-Command: de beste manier om externe code uit te voeren

I know I was pretty frustrated the first time I tried this and didn’t see that familiar ComputerName parameter on many of the cmdlets.

LET OP: In de toekomst zullen we code bouwen om in te voeren in een scriptblok. We zullen dan Invoke-Command gebruiken om dit scriptblok uit te voeren op de externe IIS-server.

Opsommen van IIS-toepassingspools met PowerShell

Om webtoepassingspools te beheren, moeten we eerst de WebAdministration-module importeren.

PS> Import-Module WebAdministration

Dit brengt alle IIS-cmdlets binnen en maakt de IIS-drive aan. Hier wordt het grootste deel van de configuratie voor app-pools gedaan. Laten we eerst controleren of er al app-pools bestaan.

PS> Get-ChildItem -Path IIS:\AppPools
 
 Name  State. Applications
 ----- ------ -------------
 GHI  Started

Het maken van nieuwe IIS-toepassingspools met PowerShell

Het lijkt erop dat ik er al een heb genaamd GHI. Misschien wil ik er nog een maken. Het gebruik van de IIS-drive maakt dit zo eenvoudig. Gebruik gewoon New-Item en geef het pad op.

PS> New-Item -Path IIS:\AppPools\MyAppPool
 
 Name      State.  Applications
 -----     ------  -------------
 MyAppPool Started

Inspecteren en wijzigen van eigenschappen van toepassingspools

I’ve now created a new app pool. We can then check all of the properties on that app pool using Get-ItemProperty and select all of the properties it returns with Select-Object. This will return all of the property names and values so you can get figure out which ones you need to modify with Set-ItemProperty.

Get-ItemProperty IIS:\AppPools\MyAppPool | select *

Nu je een app-pool hebt en de eigenschappen kunt zien, laten we een eigenschap wijzigen. Misschien wil ik een specifieke .NET-runtimeversie gebruiken met de app-pool. Opnieuw gebruik makend van de IIS-drive kan ik Set-ItemProperty gebruiken om app-pools te beheren, net zoals ik het bestandssysteem, register, certificaten en alle andere dingen die een PowerShell-drive hebben, kan beheren.

PS> Set-ItemProperty -Path IIS:\AppPools\MyAppPool -Name managedRuntimeVersion -Value 'v4.0'

Door Set-ItemProperty te gebruiken, kun je bijna alle eigenschappen van een app-pool wijzigen.

Verwijderen van toepassingspools met PowerShell

Tenslotte zijn we klaar met onze app-pool en moeten we deze nu verwijderen. Deze keer hebben we een ingebouwd PowerShell-cmdlet genaamd Remove-WebAppPool. Specificeer eenvoudig de naam en het is verdwenen!

Remove-WebAppPool -Name MyAppPool

Al deze code die we hebben gebruikt is lokaal uitgevoerd, maar wat als je het op een externe IIS-server wilt uitvoeren? Dit is waar PowerShell-remoting van pas komt. Hiervoor moeten we al deze code simpelweg bundelen in een scriptblok en vervolgens Invoke-Command gebruiken om het op de externe server uit te voeren.

$appPoolName = 'MyAppPool'
 $scriptBlock = {
    Import-Module WebAdministration
    New-Item -Path IIS:\AppPools\$using:appPoolName
    Set-ItemProperty -Path IIS:\AppPools\$using:appPoolName -Name managedRuntimeVersion -Value 'v4.0'
    Remove-WebAppPool -Name $using:appPoolName
 }
 
 Invoke-Command -ComputerName SOMEIISSERVER -ScriptBlock $scriptBlock

Hoewel deze code niet erg functioneel is, zou het een nieuwe app-pool met de naam MyAppPool aanmaken, een eigenschap instellen en deze vervolgens verwijderen. Je zult merken dat ik de variabele $using gebruik. Aangezien de code in het scriptblok op een externe computer wordt uitgevoerd, is dit nodig voor PowerShell om die variabele uit te breiden en de werkelijke waarde van $appPoolName te gebruiken die lokaal is gedeclareerd op onze clientcomputer.

Als je meer wilt weten over het beheer van IIS in het algemeen, bekijk dan de Technet IIS Administration-pagina. Daar vind je alle cmdlets die zijn opgenomen in de WebAdministration-module en hoe je ze kunt gebruiken.

Source:
https://adamtheautomator.com/powershell-iis-2/