diff --git a/Deploy-LoginMonitor.ps1 b/Deploy-LoginMonitor.ps1 index 09c68e5..f2d9486 100644 --- a/Deploy-LoginMonitor.ps1 +++ b/Deploy-LoginMonitor.ps1 @@ -997,6 +997,28 @@ function Test-RdpMonitorDeployTaskQueryReady { return [bool](Get-Command Get-RdpMonitorScheduledTaskExecutionTimeLimitResolved -ErrorAction SilentlyContinue) } +function Publish-RdpMonitorDeployTaskQueryFunctionsToScriptScope { + foreach ($name in @( + 'Get-RdpMonitorSchtasksExe', + 'Get-RdpMonitorScheduledTaskXmlDocument', + 'Test-RdpMonitorScheduledTaskExistsViaSchtasks', + 'Convert-RdpMonitorScheduledTaskExecutionTimeLimitText', + 'Get-RdpMonitorScheduledTaskExecutionTimeLimitFromDocument', + 'Get-RdpMonitorScheduledTaskActionFromDocument', + 'Test-RdpMonitorScheduledTaskExecutionTimeLimitUnlimitedValue', + 'Get-RdpMonitorScheduledTaskExecutionTimeLimitResolved', + 'Test-RdpMonitorScheduledTaskExecutionTimeLimitUnlimited', + 'Test-RdpMonitorScheduledTaskNeedsUnlimitedExecutionTimeLimit', + 'Get-RdpMonitorScheduledTaskExecutionTimeLimitLabel', + 'Test-RdpMonitorScheduledTaskActionMatchesViaSchtasks' + )) { + $cmd = Get-Command -Name $name -ErrorAction SilentlyContinue + if ($null -ne $cmd -and $cmd.CommandType -eq 'Function') { + Set-Item -Path "function:script:$name" -Value $cmd.ScriptBlock + } + } +} + function Import-RdpMonitorDeployTaskQueryModule { param([string]$ShareRoot = '') @@ -1020,6 +1042,7 @@ function Import-RdpMonitorDeployTaskQueryModule { continue } if (Test-RdpMonitorDeployTaskQueryReady) { + Publish-RdpMonitorDeployTaskQueryFunctionsToScriptScope return $true } Write-DeployLog "Предупреждение: $candidate загружен, но функции TaskQuery недоступны — пробуем следующий источник." @@ -1033,13 +1056,20 @@ function Initialize-RdpMonitorDeployTaskQuery { if (Test-RdpMonitorDeployTaskQueryReady) { return $true } + + $loaded = $false if (Import-RdpMonitorDeployTaskQueryModule -ShareRoot $ShareRoot) { - return $true + $loaded = $true + } else { + Write-DeployLog "RdpMonitor-TaskQuery.ps1 недоступен — deploy использует встроенную проверку schtasks /XML." + . $script:RdpMonitorDeployTaskQueryInlineScript + $loaded = (Test-RdpMonitorDeployTaskQueryReady) } - Write-DeployLog "RdpMonitor-TaskQuery.ps1 недоступен — deploy использует встроенную проверку schtasks /XML." - . $script:RdpMonitorDeployTaskQueryInlineScript - return (Test-RdpMonitorDeployTaskQueryReady) + if ($loaded) { + Publish-RdpMonitorDeployTaskQueryFunctionsToScriptScope + } + return $loaded } $script:RdpMonitorDeployTaskQueryInlineScript = { @@ -1212,6 +1242,8 @@ function Invoke-RdpMonitorDeploySacVersionNotice { } # --- main --- +if ($env:RDP_DEPLOY_FUNCTIONS_ONLY -eq '1') { return } + try { $shareRoot = Resolve-SourceShareRoot $sourceScript = Join-Path $shareRoot $ScriptName diff --git a/Login_Monitor.ps1 b/Login_Monitor.ps1 index aa5bbb6..6f1e9cf 100644 --- a/Login_Monitor.ps1 +++ b/Login_Monitor.ps1 @@ -90,7 +90,7 @@ $script:SkipLogDetailLimit = 15 # строки ниже, если правки «мелкие» и вы не хотите менять отображаемую версию в логах). # Рекомендация: при значимых релизах меняйте и $ScriptVersion, и version.txt одинаково; при только # исправлениях на шаре — достаточно поднять patch в version.txt (например 1.3.0.1). -$ScriptVersion = "2.0.31-SAC" +$ScriptVersion = "2.0.32-SAC" # Логи (все под InstallRoot) $LogFile = Join-Path $script:InstallRoot "Logs\login_monitor.log" diff --git a/version.txt b/version.txt index 0744909..684bc8e 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -2.0.31-SAC +2.0.32-SAC