Скрипт PowerShell для перезапуска сервисов DocsVision

Михаил Захаров

Зачастую возникает задача перезапуска сервисов DocsVision и IIS. Для этого нужно либо открывать 2 консоли управления, либо останавливать из командной строки все по очереди.
При этом нужно помнить, что если клиенты соединяются по net pipes c Windows сервисом DocsVision Storage Server Service, то останавливать его нужно в последнюю очередь.

Для упрощения задачи можно использовать скрипты на PowerShell для автоматизации процесса.

Скрипты приведены для версии DocsVision 4.1. Для других версий нужно указать другие имена сервисов в массиве $Services

 

1. Перезапуск сервисов DocsVision и службы IIS

Function SmartStop ([string]$Name, [bool]$RO)
{
$Service = Get-Service -Name $Name
If ($RO -eq $true)
{
If ($Service.Status -eq "Running")
{
write-host ("Stopping:" + $Name)
Stop-Service -Name $Name -force
return $Name
break
}
} else {
write-host ("Stopping:" + $Name)
Stop-Service -Name $Name
return $Name
}
}

$ErrorActionPreference="SilentlyContinue"
$Services=("WFServer41","WWFServer41","DVReportServer41","DVStorageServer41")
$Stopped=@()

$RunningOnly=$false
if ($args)
{
if ($args[0] -eq "-ro")
{
$RunningOnly=$true
write-host ("Restarting only running services")
}
}

foreach ($ServName in $Services) {
[string]$a=SmartStop $ServName $RunningOnly
$Stopped=$Stopped+$a
}

Stop-Process "ExecLogic.exe"
write-host ("IIS restarting")
IISRESET /RESTART

$i=0
while ($Stopped[$i] -ne $null)
{
if ($Stopped[$i] -ne "")
{
write-host ("Starting:" + $Stopped[$i])
Start-Service -Name $Stopped[$i]
}
$i+=1
}

Например, скрипт сохранен в restart-dv.ps1. Есть два варианта использования
>restart-dv1
перезапускает сервисы по порядку

>restart-dv1 -ro
перезапускает, только те сервисы, которые на данный момент активны. Полезно в случаях, когда некоторые из них остановлены вручную.

2. Остановка всех сервисов DocsVision и службы IIS.

$ErrorActionPreference="SilentlyContinue"
$Services=("WFServer41","WWFServer41","DVReportServer41","DVStorageServer41")

foreach ($ServName in $Services) {
write-host ("Stopping:" + $ServName)
Stop-Service -Name $ServName
}
Stop-Process "ExecLogic.exe"

iisreset /STOP

3. Запуск всех сервисов DocsVision и службы IIS.
$ErrorActionPreference="SilentlyContinue"
$Services=("DVStorageServer41","WFServer41","WWFServer41","DVReportServer41")

iisreset /START

foreach ($ServName in $Services) {
write-host ("Starting:" + $ServName)
Start-Service -Name $ServName
}

Помните про установку политики безопасности скриптов >Set-ExecutionPolicy


Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/home.asp?artId=20059