cmdlets/Stop-1C.ps1
. $PSScriptRoot\CommonUtils.ps1 New-Alias -Name 'Kill-1C' -Value 'Stop-1C' #---------------------------------------------------------------------------------------- # Завершает процессы платформы 1С function Stop-1C { <# .SYNOPSIS Завершает процессы платформы 1С. .DESCRIPTION Выводит список всех запущенных процессов платформы 1С и ожидает подтверждения пользователя для завершения. Если передана строка поиска, то будут найдены все процессы платформы 1С содержащие в своей командной строке запуска переданную строку. Псевдоним: Kill-1C .PARAMETER Search Строка поиска содержание которой будет определяться в командной строке запуска платформы 1С. Псевдонимы: s, filter, f .PARAMETER IncludeServer1C Включить процессы сервера 1С в список к удалению. По умолчанию процессы сервера 1С в список к удалению не включаются. .PARAMETER Force Завершить все найденные процессы без вопросов. .EXAMPLE #Завершить все запущенные процессы в режиме предприятия: Stop-1C ENTERPRISE .EXAMPLE #Завершить все процессы к конкретной базе: Stop-1C '/IBName"ИмяБазы"' #> [CmdletBinding()] param( [Alias("s", "filter", "f")][string]$Search, # строка поиска в командной строке запуска процесса [Parameter(HelpMessage="IncludeServer1C = false")][switch]$IncludeServer1C, # По умолчанию процессы сервера 1С исключены из удаления [switch]$Force # True = завершить процессы не спрашивая ) Write-Verbose "Search = $Search" $Search = $Search.Replace(":","%").Replace("\","%").Replace("/","%").Replace("%%","%") Write-Verbose "Search_Replaced = $Search" $Filter = "Name LIKE '%1cv8%'" if($IncludeServer1C) {$Filter = "CommandLine LIKE '%1cv8%'"} if ($Search -ne "") {$Filter += "and CommandLine LIKE '%$Search%'"} Write-Verbose "IncludeServer1C = $IncludeServer1C" Write-Verbose "Filter = $Filter" Write-Verbose "Force = $Force" $Process = Get-WmiObject Win32_Process -Filter $Filter Write-Verbose "Process = $Process" if($Process -eq $null){Return} '' $Result = $false if ($Force) {$Result = Terminate-Process $Process -Force} else { $Result = Terminate-Process $Process if (Get-Permission "Завершить"){'';$Result = Terminate-Process $Process -Force} } #Return $Result }# end of Stop-1C #---------------------------------------------------------------------------------------- # Завершает переданные процессы function Terminate-Process { [CmdletBinding()] param( $Process, # массив процессов [switch]$Force ) $Result = $false $Force = $Force -and $DebugPreference -eq 'SilentlyContinue' $Text="Будет завершен процесс:"; $Color='White' if($Force){$Text="Завершен процесс:"; $Color='Yellow'} foreach($Proc in $Process) { Write-Host $Text -ForegroundColor DarkGray if ($Force){$Proc.Terminate() | Out-Null; $Result = $true} Write-Host ("PID = {0}; CommandLine = {1}" -f $Proc.ProcessID, $Proc.CommandLine) -ForegroundColor $Color } Return $Result }# end Terminate-Process |