-
Notifications
You must be signed in to change notification settings - Fork 0
/
restart_1c
31 lines (31 loc) · 1.71 KB
/
restart_1c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Param(
[Int32]$delay = $( Read-Host "Введите сколько минут необходимо подождать до перезагрузки" ),
[Parameter (Mandatory=$false)]
[string]$server_1c = "db.domain.local",
[Parameter (Mandatory=$false)]
[switch]$restart_1c = $false
)
#импортируем модуль управления сессиями в терминалах
Import-Module C:\scripts\PSTerminalServices
#Делаем правильный вывод на экран пользователям
$time = (get-date).AddMinutes($delay)
#Сообщение для пользователей
$message = "Сервер 1с будет перегружен в " + ($time).ToString('HH:mm')
#переводим в секунды
$delay *= 60
#Список серверов
$servers = @("ts1.domain.local", "ts2.domain.local")
#Для каждого сервера отдельно идёт цикл
foreach ($server in $servers)
{
Write-Host "On SERVER " $server " message was delivered to users."
#для пользователей на серверах выводим сообщение. Условие должно быть where {$_.username -ne ""}
get-tssession -computername $server | where {$_.username -ne ""} | Send-TSMessage -Text $message
}
#Выполняем скрипт с ребутом на удалённом сервере
#На удалённом сервере есть заранее подготовленный скрипт для рестарта 1С и чистки кешей \\$server_1c E:\scripts\restart_SQL_clear.bat
if ($restart_1c){
#Ждём $delay секунд, перед ребутом
ping -n $delay localhost >> $NULL
psexec \\$server_1c E:\scripts\restart_SQL_clear.bat
}