Public/Tasks/Invoke-KillAppPoolTask.ps1
#Requires -Modules WebAdministration Set-StrictMode -Version Latest Write-Verbose "Loading $($MyInvocation.MyCommand.Path)" Function Invoke-KillAppPoolTask { [CmdletBinding(SupportsShouldProcess=$true)] param( [Parameter(Mandatory=$true)] [string]$Name ) $appPoolPath = "IIS:\AppPools\$Name" if (Test-Path -Path $appPoolPath) { $appPoolWorkers = Get-ChildItem $appPoolPath\WorkerProcesses if ($appPoolWorkers) { $appPoolWorkers | ForEach-Object { $processId = $_.processId if ($processId) { $appPoolProcessInfo = "$Name [$processId]" $message = "Killing AppPool process: $appPoolProcessInfo" if ($PSCmdLet.ShouldProcess("$appPoolProcessInfo", "$message" )) { Write-TaskInfo $message -Tag 'KillAppPool' try { Stop-Process -id $processId -Force -Confirm:$false } catch { Write-Warning $_.Exception.Message } } } } } } else { Write-TaskInfo "AppPool $Name does not exist" -Tag 'KillAppPool' } } Register-SitecoreInstallExtension -Command Invoke-KillAppPoolTask -As KillAppPool -Type Task -Force Write-Verbose "Loaded $($MyInvocation.MyCommand.Path)" |