param([string]$Name,[switch]$Force=$false) If ( $Name ) { ## Get all matching processes $Processes = Get-Process | Where { $_.Name -ilike $Name } ## Get the total number of matching processes $NumMatches = $Processes.Count If ( $NumMatches -ge 1 ) { ## Forcefully close matching processes If ( $Force ) { Foreach ( $proc in $Processes ) { Stop-Process $proc -Force -ErrorAction SilentlyContinue } Write-Output "Forcefully closed ${NumMatches} matching instance(s) of ${Name}" } ## Gracefully close matching processes Else { Foreach ( $proc in $Processes ) { $proc.CloseMainWindow() | Out-Null } Write-Output "Gracefully closed ${NumMatches} matching instance(s) of ${Name}" } } Else { Write-Output "No running processes match the name ${Name}" } } Else { Write-Output "No process name was specified!" }