Private/Task.ps1
|
#Requires -Version 5.1 function Get-SMBeatTaskCimParams { param( $CimSession ) $params = @{ TaskName = $script:SMBeatTaskName TaskPath = $script:SMBeatTaskPath } if ($CimSession) { $params['CimSession'] = $CimSession } return $params } function Register-SMBeatScheduledTaskInternal { param( [Parameter(Mandatory = $true)] [string]$DataRoot, [int]$IntervalSec = 60, $CimSession ) $exe = Get-SMBeatPowerShellExePath $scriptPath = Get-SMBeatCollectorScriptPath $arg = '-NoProfile -NonInteractive -ExecutionPolicy Bypass -File "{0}"' -f $scriptPath $action = New-ScheduledTaskAction -Execute $exe -Argument $arg $start = (Get-Date).AddMinutes(-1) $repeat = New-TimeSpan -Seconds $IntervalSec $duration = New-TimeSpan -Days 9999 $trigger = New-ScheduledTaskTrigger -Once -At $start -RepetitionInterval $repeat -RepetitionDuration $duration $principal = New-ScheduledTaskPrincipal -UserId 'SYSTEM' -LogonType ServiceAccount -RunLevel Highest $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable -MultipleInstances IgnoreNew $task = New-ScheduledTask -Action $action -Trigger $trigger -Principal $principal -Settings $settings $registerParams = @{ TaskName = $script:SMBeatTaskName TaskPath = $script:SMBeatTaskPath InputObject = $task Force = $true } if ($CimSession) { $registerParams['CimSession'] = $CimSession } Register-ScheduledTask @registerParams | Out-Null } function Unregister-SMBeatScheduledTaskInternal { param( $CimSession ) $params = Get-SMBeatTaskCimParams -CimSession $CimSession $params['Confirm'] = $false $params['ErrorAction'] = 'SilentlyContinue' Unregister-ScheduledTask @params } function Start-SMBeatScheduledTaskInternal { param( $CimSession ) $enable = Get-SMBeatTaskCimParams -CimSession $CimSession Enable-ScheduledTask @enable | Out-Null $start = Get-SMBeatTaskCimParams -CimSession $CimSession Start-ScheduledTask @start } function Stop-SMBeatScheduledTaskInternal { param( $CimSession ) $disable = Get-SMBeatTaskCimParams -CimSession $CimSession Disable-ScheduledTask @disable | Out-Null } |