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)
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$loaded = $false
|
||||||
if (Import-RdpMonitorDeployTaskQueryModule -ShareRoot $ShareRoot) {
|
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."
|
if ($loaded) {
|
||||||
. $script:RdpMonitorDeployTaskQueryInlineScript
|
Publish-RdpMonitorDeployTaskQueryFunctionsToScriptScope
|
||||||
return (Test-RdpMonitorDeployTaskQueryReady)
|
}
|
||||||
|
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
@@ -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
@@ -1 +1 @@
|
|||||||
2.0.31-SAC
|
2.0.32-SAC
|
||||||
|
|||||||
Reference in New Issue
Block a user