Резервное копирование с помощью 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 "Резервное копирование завершено... "
#определяем переменную для лога
$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 "Резервное копирование завершено... "
Комментарии
Отправить комментарий