Администрирование
26
Ноя
5

Проверка состояния служб CRM при помощи PowerShеll

По долгу службы приходится поддерживать работу CRM системы? И Вас ругают, когда система «лежит»? Тогда было бы неплохо знать об остановке работы виндовых сервисов CRM. А поможет нам в это PowerShell.

Следующий PowerShell-скрипт проверяет работает ли определенный сервис. Если не работает, то скрипт попытается перезапустить его. Также скрипт отправит электропочту если не найдет нужный сервис или его не удалось запустить.

# Сервисы CRM
param($svclist = [String[]](
	"MSCRMAsyncService1",
	"MSCRMSandboxService",
	"MSCRMMonitoringService"
));

# Общие переменные
$xto = "slivka_83@mail.ru";
$xfrom = "slivka_83@mail.ru";
$secpasswd = ConvertTo-SecureString "*******" -AsPlainText -Force;
$mycreds = New-Object System.Management.Automation.PSCredential ($xfrom, $secpasswd);

# Просматриваем по очереди заданные сервисы 
foreach ( $svcname in $svclist ) { 
	# Получаем сервис
	$svc = get-service $svcname -ErrorAction SilentlyContinue;

	# Если сервис не найден - отправляем уведомление
	if ($svc -eq $null)
	{
		$xsub = $env:COMPUTERNAME + ": " + $svcname + " service error";
		$msg = $env:COMPUTERNAME + ": " + $svcname + " service does not exist";
		Write-host $msg
		Send-MailMessage -To $xto -From $xfrom -Subject $xsub -Body $msg -SmtpServer smtp.mail.ru -UseSsl -credential $mycreds
        Continue;
	}

	# Првоеряем статус сервиса
	$sts = $svc | Select Status;
	if ($sts.Status.ToString() -eq "Stopped")
	{
		# Если сервис остановлен - пробуем перезапустить
		Write-Host "Service " $svcname  " is STOPPED ==> trying to restart";
		Restart-Service $svcname ;
    
		# Снова проверяем статус
		$svc = get-service $svcname -ErrorAction SilentlyContinue;
		if ($svc -ne $null)
		{
			# Если перезапустить не получилось - отправляем уведомление
			$sts = $svc | Select Status ;
			if ($sts.Status.ToString() -eq "Stopped")
			{
				$xsub = $env:COMPUTERNAME + ": " + $svcname + " service error";
				$msg = $env:COMPUTERNAME + ": " + $svcname + " service could not be restarted";
				Write-host $msg
				Send-MailMessage -To $xto -From $xfrom -Subject $xsub -Body $msg -SmtpServer smtp.mail.ru -UseSsl -credential $mycreds
				Continue
			}

			Write-Host $svcname " status = " $sts.Status.ToString();
		}
	}
	else
	{
		Write-Host "Service " $svcname " is still RUNNING";
	}
}


Скрипт можно повесить в виндовый шедулер и он будет время от времени радовать Вас важными сообщениями 🙂

Комментарии (5)
  • Андрей 26.11.2015

    Может PowerShell?

  • slivka_83 26.11.2015

    Спасибо, поправил.

  • Serj 26.11.2015

    Не везде)

  • CONEX 26.11.2015

    Добрый день, slivka_83!

    вышел MS CRM 2016.
    А Вы куда-то пропали?
    Ждём.

  • slivka_83 26.11.2015

    Пишу, пишу 🙂 Скоро начнется 🙂
    добрый день 🙂

*

code