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:
+36
-4
@@ -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
|
||||
|
||||
+1
-1
@@ -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"
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
2.0.31-SAC
|
||||
2.0.32-SAC
|
||||
|
||||
Reference in New Issue
Block a user