fix: deploy TaskQuery script scope (2.0.32-SAC)

Publish TaskQuery helpers to script scope after import so ExecutionTimeLimit checks work from nested deploy callers; add RDP_DEPLOY_FUNCTIONS_ONLY early exit for isolated function loading.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
PTah
2026-06-11 15:23:59 +10:00
parent 31ebd5d653
commit 0da1d0f2ac
3 changed files with 38 additions and 6 deletions
+36 -4
View File
@@ -997,6 +997,28 @@ function Test-RdpMonitorDeployTaskQueryReady {
return [bool](Get-Command Get-RdpMonitorScheduledTaskExecutionTimeLimitResolved -ErrorAction SilentlyContinue) 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 { function Import-RdpMonitorDeployTaskQueryModule {
param([string]$ShareRoot = '') param([string]$ShareRoot = '')
@@ -1020,6 +1042,7 @@ function Import-RdpMonitorDeployTaskQueryModule {
continue continue
} }
if (Test-RdpMonitorDeployTaskQueryReady) { if (Test-RdpMonitorDeployTaskQueryReady) {
Publish-RdpMonitorDeployTaskQueryFunctionsToScriptScope
return $true return $true
} }
Write-DeployLog "Предупреждение: $candidate загружен, но функции TaskQuery недоступны — пробуем следующий источник." Write-DeployLog "Предупреждение: $candidate загружен, но функции TaskQuery недоступны — пробуем следующий источник."
@@ -1033,13 +1056,20 @@ function Initialize-RdpMonitorDeployTaskQuery {
if (Test-RdpMonitorDeployTaskQueryReady) { if (Test-RdpMonitorDeployTaskQueryReady) {
return $true return $true
} }
if (Import-RdpMonitorDeployTaskQueryModule -ShareRoot $ShareRoot) {
return $true
}
$loaded = $false
if (Import-RdpMonitorDeployTaskQueryModule -ShareRoot $ShareRoot) {
$loaded = $true
} else {
Write-DeployLog "RdpMonitor-TaskQuery.ps1 недоступен — deploy использует встроенную проверку schtasks /XML." Write-DeployLog "RdpMonitor-TaskQuery.ps1 недоступен — deploy использует встроенную проверку schtasks /XML."
. $script:RdpMonitorDeployTaskQueryInlineScript . $script:RdpMonitorDeployTaskQueryInlineScript
return (Test-RdpMonitorDeployTaskQueryReady) $loaded = (Test-RdpMonitorDeployTaskQueryReady)
}
if ($loaded) {
Publish-RdpMonitorDeployTaskQueryFunctionsToScriptScope
}
return $loaded
} }
$script:RdpMonitorDeployTaskQueryInlineScript = { $script:RdpMonitorDeployTaskQueryInlineScript = {
@@ -1212,6 +1242,8 @@ function Invoke-RdpMonitorDeploySacVersionNotice {
} }
# --- main --- # --- main ---
if ($env:RDP_DEPLOY_FUNCTIONS_ONLY -eq '1') { return }
try { try {
$shareRoot = Resolve-SourceShareRoot $shareRoot = Resolve-SourceShareRoot
$sourceScript = Join-Path $shareRoot $ScriptName $sourceScript = Join-Path $shareRoot $ScriptName
+1 -1
View File
@@ -90,7 +90,7 @@ $script:SkipLogDetailLimit = 15
# строки ниже, если правки «мелкие» и вы не хотите менять отображаемую версию в логах). # строки ниже, если правки «мелкие» и вы не хотите менять отображаемую версию в логах).
# Рекомендация: при значимых релизах меняйте и $ScriptVersion, и version.txt одинаково; при только # Рекомендация: при значимых релизах меняйте и $ScriptVersion, и version.txt одинаково; при только
# исправлениях на шаре — достаточно поднять patch в version.txt (например 1.3.0.1). # исправлениях на шаре — достаточно поднять patch в version.txt (например 1.3.0.1).
$ScriptVersion = "2.0.31-SAC" $ScriptVersion = "2.0.32-SAC"
# Логи (все под InstallRoot) # Логи (все под InstallRoot)
$LogFile = Join-Path $script:InstallRoot "Logs\login_monitor.log" $LogFile = Join-Path $script:InstallRoot "Logs\login_monitor.log"
+1 -1
View File
@@ -1 +1 @@
2.0.31-SAC 2.0.32-SAC