Резервное копирование с помощью PowerShell

Задача организовать резервное копирование файла базы данных 1С на сервере штатными средствами по расписанию с логированием процесса.

#определяем переменную для лога
$filelog = "F:\backuplog\backuplogkadri.log"
$logcurentdate = (Get-Date -format "dd-MM-yyyy-HH-mm-ss").tostring()
$msg = "--------------------Началось резервное копирование базы 1С $logcurentdate ---------------------"
Out-File -FilePath $filelog -InputObject $msg -Append


#Ищим терминальные сессии с открытой 1С
$1cv8 = Get-WMIObject win32_process | where {$_.ProcessName -eq "1cv8.exe"}# находим сессии в которых запущен процесс 1cv8


#Отправка сообщений пользователям с открытой 1С


foreach ($proc in $1cv8) #Цикл паеребора элементов массива пользователей
{
Send-UserMessage -UnifiedSessionID $proc.SessionId -MessageTitle "Сообщение от администратора 1С" -MessageBody "Через 2 минуты будет отключен ваш сеанс работы" -HostServer DB1C
$msg = "Отправлено сообщение пользователю номер сессии которого: " + $proc.SessionId
Out-File -FilePath $filelog -InputObject $msg -Append
}
#Ждем 2 минуты до отключения
Wait-Event -Timeout 120

#Закрываем терминальные сессии с 1С

#$1cv8 = Get-WMIObject win32_process | where {$_.ProcessName -eq "1cv8.exe"}# находим сессии в которых запущен процесс 1cv8


foreach ($proc in $1cv8) #Цикл паеребора элементов массива пользователей
{
Invoke-RDUserLogoff -HostServer DB1C -UnifiedSessionID $proc.SessionID -Force #команда отключения сессии
$msg = "Пользователь номер сессии которого: " + $proc.SessionId + " отключен"
Out-File -FilePath $filelog -InputObject $msg -Append
$i++
}
$msg = "Сессии пользователей с открытой 1С завершены "
Out-File -FilePath $filelog -InputObject $msg -Append
$msg = "Завершено " + $i + " сессий"
Out-File -FilePath $filelog -InputObject $msg -Append


#Запускаем процесс резервного копирования
#Определение текущей даты
$CurentDate = (Get-Date -Format "dd-MM-yyyy-HH-mm-ss").ToString() #Текущая дата


#Опеределение файла для добавления в архив
$filearchive = "E:\Кадры\1Cv8.1CD" #Файл для архивирования
$backuparchive = "F:\Кадры\$curentdate.rar" # Путь к папке с резервными копиями
$msg = "Запускаем резервное копирование базы данных 1С - " + $CurentDate
Out-File -FilePath $filelog -InputObject $msg -Append
& "C:\Program Files\winrar\rar.exe " a -m2 $backuparchive "$filearchive" #Запуск команды резервного копирования
$msg = "Резервное копирование базы 1С завершено " + $CurentDate
Out-File -FilePath $filelog -InputObject $msg -Append

#Write-Host "Резервное копирование завершено... "

Комментарии

Популярные сообщения из этого блога

PowerShell. Коммандлет для паузы в выполнении скрипта Wait-Event

Первоначальная настройка МФУ Kyocera FS-1035MFP для печати по сети