Public/New-1CDefaultCompressTask.ps1
|
function New-1CDefaultCompressTask { [CmdletBinding()] param( [Parameter(Mandatory = $false)] [string]$TaskName = "Compress1CLogsTask", [Parameter(Mandatory = $false)] [string]$Description = "Ежедневное сжатие файлов журналов регистрации для всех баз", [Parameter(Mandatory = $false)] [datetime]$DailyTime = (Get-Date "05:00"), [Parameter(Mandatory = $false)] [string]$ModuleName = "1CMGmt", [Parameter(Mandatory = $false)] [string]$FunctionName = "Compress-1CLogs" ) # Проверка наличия модуля ScheduledTasks (требуется PowerShell 5.1+) if (-not (Get-Module -ListAvailable -Name ScheduledTasks)) { Write-Error "Модуль ScheduledTasks не найден. Требуется PowerShell 5.1 или выше." return } Import-Module ScheduledTasks -ErrorAction Stop try { # Формирование аргументов для запуска PowerShell-скрипта $actionArgument = "-NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -Command `"Import-Module $ModuleName; $FunctionName`"" $action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument $actionArgument # Определение триггера – ежедневный запуск в указанное время $trigger = New-ScheduledTaskTrigger -Daily -At $DailyTime # Определение принципала для запуска задачи от имени SYSTEM с наивысшими правами $principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest # Если задача с таким именем уже существует, удаляем её if (Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue) { Write-Verbose "Задача '$TaskName' уже существует. Удаляем старую задачу..." Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false } # Регистрация задачи Register-ScheduledTask -TaskName $TaskName -Action $action -Trigger $trigger -Principal $principal -Description $Description Write-Output "Задача '$TaskName' успешно создана." } catch { Write-Error "Ошибка при создании задачи: $_" } } |