ITFAQ.nl
Vergeet niet deze post te delen!

Recycle applicatiepools met PowerShell als deze een bepaalde scriptProcessor gebruikt

Als het een keer gebeurt dat je in IIS een scriptProcessor-update (bijvoorbeeld een PHP-versie) moet terugdraaien, dan kun je dat in IIS redelijk eenvoudig doen. Met PowerShell bijvoorbeeld.

Zo moest ik afgelopen juni de PHP-update van 7.2.18 naar 7.2.19 ongedaan maken vanwege een serieuze bug in PHP 7.2.19: #78125 Persistent php-cgi.exe access fault.

Het onderstaande stukje PowerShell is wat ik hiervoor gebruikte om de scriptProcessor aan te passen en om aan de hand van een conditie (de site moet deze scriptProcessor als Handler Mapping gebruiken) applicatiepools te recyclen.

foreach ($server in (Get-ADComputer -Filter {(enabled -eq $True) -and ( (DNSHostname -like "iis-*") )} -SearchBase "OU=Webservers,OU=Computers,DC=dc,DC=example,DC=com").DNSHostName) {
	invoke-command -computername $server -scriptblock {
		if( (Test-Path "d:\scripts\php\7.2.19" )) {
			Write-Host "Maak een nieuwe PHP 7.2 symlink op $Using:server"
			&cmd.exe "/c rmdir d:\scripts\php\7.2"
			&cmd.exe "/c mklink /d c:\scripts\php\7.2 7.2.18"
		}
	}
}

foreach ($server in (Get-ADComputer -Filter {(enabled -eq $True) -and ( (DNSHostname -like "iis-*") )} -SearchBase "OU=Webservers,OU=Computers,DC=dc,DC=example,DC=com").DNSHostName) {
	invoke-command -computername $server -scriptblock {
		Get-Website | % {
			$sitename = $_.name;
			try{
				$handlers = Get-WebConfiguration /system.webServer/handlers/add -Location $sitename
				If( $handlers.scriptProcessor -like "d:\scripts\php72\php-cgi.exe*" ) {
					write-output "$sitename gebruikt PHP 7.2"
					&appcmd.exe recycle apppool $sitename
				}
			}
			catch {}
		}
	} -AsJob
}

Belangrijk om hierbij te vermelden is dat we een PHP-versie hebben geplaatst in d:\scripts\php\7.2.19 en een directory symbolic link d:\scripts\php\7.2 gebruiken die is gelinkt naar d:\scripts\php\7.2.19.

Hiermee kun je in IIS de scriptProcessor d:\scripts\php\7.2\php-cgi.exe instellen, en de achterliggende versie 7.2.18 eenvoudig verhogen naar 7.2.19 door het aanpassen van de directory symlink. Of omgekeerd: 7.2.19 downgraden naar 7.2.18. Je hoeft dan niet bij tientallen of honderden websites de Handler Mapping aan te passen.

Ook interessant voor jou:  E-mail instellen in Outlook 2013

Voor IIS is het dan nodig de desbetreffende applicatiepool die van deze scriptProcessor gebruikmaakt te recyclen. Dit doe je met appcmd.exe. Als je graag meer wilt weten van appcmd, lees dan mijn appcmd introductie op Saotn.org. En je vindt ook wat -SearchBase voor invloed heeft op Get-ADComputer in mijn post Use -SearchBase with Get-ADComputer for faster results.

About the Author JanR

Hoi, ik ben Jan. Ik ben geen hacker, coder, developer, programmeur of guru. Ik ben gewoon een systeembeheerder die zijn dagelijkse ding doet bij Vevida. Met meer dan 15 jaar ervaring ben ik gespecialiseerd in Windows Server, IIS, Linux (CentOS en Debian), beveiliging/security, PHP, WordPress (Hosting & Docs), websites en optimalisatie. Wil je mij en de ontwikkeling van ITFAQ.nl graag steunen? Doneer dan een kopje koffie via Paypal. Gebruik deze link: https://paypal.me/jreilink. Bedankt! :)

follow me on:
Skip to content