Procdump needs to be installed on the system. (procdump -i).
Import-Module WebAdministration $apps = dir IIS:\AppPools\ | Select-Object -expand name Write-host "Application Pools on this server:" -foregroundcolor red -backgroundcolor yellow Write-Output $apps $appname = Read-Host "Enter AppPool Name" $apid = Get-WmiObject -NameSpace 'root\WebAdministration' -class 'WorkerProcess' -ComputerName 'LocalHost' | Where-Object {$_.AppPoolName -like "$appname"} | Select-Object -expand processId procdump -ma -r $apid
First we import the webadmin module. Then list out the application pools on the server so you don’t need to open IIS or run appcmd list wps. Then it asks you for the name of the app pool which you can now copy and paste from the list provided. Then it finds the process ID and invokes procdump to take a full user dump with reflection (-r) to prevent the application pool from going down.
I did some very minor testing by just running apache bench on a site to create a bunch of requests and then running this script to see if it brings it down. All my requests were successful and my DotNetNuke site didn’t warm back up. I’m not 100% confident this is production safe, but at least it’s ready for testing.