From 71ffd3c36af04484d7788e0db9f91d6f3dec5e47 Mon Sep 17 00:00:00 2001 From: Alexey Pustovalov Date: Thu, 11 Jun 2026 17:52:37 +0900 Subject: [PATCH] Optimized powershell code --- Dockerfiles/agent/windows/Dockerfile | 6 ++--- .../agent/windows/docker-entrypoint.ps1 | 22 ++++++++++--------- Dockerfiles/agent2/windows/Dockerfile | 6 ++--- .../agent2/windows/docker-entrypoint.ps1 | 22 ++++++++++--------- 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/Dockerfiles/agent/windows/Dockerfile b/Dockerfiles/agent/windows/Dockerfile index 8929eed4..d12378a8 100644 --- a/Dockerfiles/agent/windows/Dockerfile +++ b/Dockerfiles/agent/windows/Dockerfile @@ -37,11 +37,9 @@ WORKDIR C:\zabbix\ USER ContainerAdministrator -RUN setx /M PATH "%PATH%;C:\Program Files\PowerShell" +SHELL ["C:\\Program Files\\PowerShell\\pwsh.exe", "-Command", "$ErrorActionPreference = 'Stop';"] -SHELL ["pwsh", "-Command", "$ErrorActionPreference = 'Stop';"] - -RUN $env:PATH = [string]::Format('{0}\zabbix\sbin;{0}\zabbix\bin;', $env:SystemDrive) + $env:PATH; ` +RUN $env:PATH = [string]::Format('{0}\zabbix\sbin;{0}\zabbix\bin;{0}\Program Files\PowerShell;', $env:SystemDrive) + $env:PATH; ` [Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine); ` ` [Environment]::SetEnvironmentVariable('ZABBIX_USER_HOME_DIR', $env:ZABBIX_USER_HOME_DIR, [EnvironmentVariableTarget]::Machine); ` diff --git a/Dockerfiles/agent/windows/docker-entrypoint.ps1 b/Dockerfiles/agent/windows/docker-entrypoint.ps1 index c5864926..577d039e 100644 --- a/Dockerfiles/agent/windows/docker-entrypoint.ps1 +++ b/Dockerfiles/agent/windows/docker-entrypoint.ps1 @@ -5,11 +5,11 @@ if ($env:DEBUG_MODE -eq "true") { } # Default Zabbix server host -if ($env:ZBX_SERVER_HOST -eq $null) { +if ([string]::IsNullOrEmpty($env:ZBX_SERVER_HOST)) { $env:ZBX_SERVER_HOST="zabbix-server" } # Default Zabbix server port number -if ($env:ZBX_SERVER_PORT -eq $null) { +if ([string]::IsNullOrEmpty($env:ZBX_SERVER_PORT)) { $env:ZBX_SERVER_PORT="10051" } @@ -140,10 +140,10 @@ function File-Process-From-Env { } function Prepare-Zbx-Agent-Config { - if ($env:ZBX_PASSIVESERVERS -eq $null) { + if ([string]::IsNullOrEmpty($env:ZBX_PASSIVESERVERS)) { $env:ZBX_PASSIVESERVERS="" } - if ($env:ZBX_ACTIVESERVERS -eq $null) { + if ([string]::IsNullOrEmpty($env:ZBX_ACTIVESERVERS)) { $env:ZBX_ACTIVESERVERS="" } @@ -216,16 +216,18 @@ function PrepareAgent { ClearZbxEnv } -$commandArgs=$args +$commandArgs = $args -if ($args.length -gt 0 -And $args[0].Substring(0, 1) -eq '-') { - $commandArgs = "C:\zabbix\sbin\zabbix_agentd.exe " + $commandArgs +if ($args.length -gt 0 -And $args[0].StartsWith('-')) { + $commandArgs = @("C:\zabbix\sbin\zabbix_agentd.exe") + $args } -if ($args.length -gt 0 -And $args[0] -eq "C:\zabbix\sbin\zabbix_agentd.exe") { +if ($commandArgs.length -gt 0 -And $commandArgs[0] -eq "C:\zabbix\sbin\zabbix_agentd.exe") { PrepareAgent } -if ($args.length -gt 0) { - Invoke-Expression "$CommandArgs" +if ($commandArgs.length -gt 0) { + $exe, $exeArgs = $commandArgs + & $exe @exeArgs + exit $LASTEXITCODE } diff --git a/Dockerfiles/agent2/windows/Dockerfile b/Dockerfiles/agent2/windows/Dockerfile index a3e4c01a..2fff0584 100644 --- a/Dockerfiles/agent2/windows/Dockerfile +++ b/Dockerfiles/agent2/windows/Dockerfile @@ -38,11 +38,9 @@ WORKDIR C:\zabbix\ USER ContainerAdministrator -RUN setx /M PATH "%PATH%;C:\Program Files\PowerShell" +SHELL ["C:\\Program Files\\PowerShell\\pwsh.exe", "-Command", "$ErrorActionPreference = 'Stop';"] -SHELL ["pwsh", "-Command", "$ErrorActionPreference = 'Stop';"] - -RUN $env:PATH = [string]::Format('{0}\zabbix\sbin;{0}\zabbix\bin;', $env:SystemDrive) + $env:PATH; ` +RUN $env:PATH = [string]::Format('{0}\zabbix\sbin;{0}\zabbix\bin;{0}\Program Files\PowerShell;', $env:SystemDrive) + $env:PATH; ` [Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine); ` ` [Environment]::SetEnvironmentVariable('ZABBIX_USER_HOME_DIR', $env:ZABBIX_USER_HOME_DIR, [EnvironmentVariableTarget]::Machine); ` diff --git a/Dockerfiles/agent2/windows/docker-entrypoint.ps1 b/Dockerfiles/agent2/windows/docker-entrypoint.ps1 index c7ce0ee3..08a3378c 100644 --- a/Dockerfiles/agent2/windows/docker-entrypoint.ps1 +++ b/Dockerfiles/agent2/windows/docker-entrypoint.ps1 @@ -5,11 +5,11 @@ if ($env:DEBUG_MODE -eq "true") { } # Default Zabbix server host -if ($env:ZBX_SERVER_HOST -eq $null) { +if ([string]::IsNullOrEmpty($env:ZBX_SERVER_HOST)) { $env:ZBX_SERVER_HOST="zabbix-server" } # Default Zabbix server port number -if ($env:ZBX_SERVER_PORT -eq $null) { +if ([string]::IsNullOrEmpty($env:ZBX_SERVER_PORT)) { $env:ZBX_SERVER_PORT="10051" } @@ -140,10 +140,10 @@ function File-Process-From-Env { } function Prepare-Zbx-Agent-Config { - if ($env:ZBX_PASSIVESERVERS -eq $null) { + if ([string]::IsNullOrEmpty($env:ZBX_PASSIVESERVERS)) { $env:ZBX_PASSIVESERVERS="" } - if ($env:ZBX_ACTIVESERVERS -eq $null) { + if ([string]::IsNullOrEmpty($env:ZBX_ACTIVESERVERS)) { $env:ZBX_ACTIVESERVERS="" } @@ -251,16 +251,18 @@ function PrepareAgent { ClearZbxEnv } -$commandArgs=$args +$commandArgs = $args -if ($args.length -gt 0 -And $args[0].Substring(0, 1) -eq '-') { - $commandArgs = "C:\zabbix\sbin\zabbix_agent2.exe " + $commandArgs +if ($args.length -gt 0 -And $args[0].StartsWith('-')) { + $commandArgs = @("C:\zabbix\sbin\zabbix_agent2.exe") + $args } -if ($args.length -gt 0 -And $args[0] -eq "C:\zabbix\sbin\zabbix_agent2.exe") { +if ($commandArgs.length -gt 0 -And $commandArgs[0] -eq "C:\zabbix\sbin\zabbix_agent2.exe") { PrepareAgent } -if ($args.length -gt 0) { - Invoke-Expression "$CommandArgs" +if ($commandArgs.length -gt 0) { + $exe, $exeArgs = $commandArgs + & $exe @exeArgs + exit $LASTEXITCODE }