From b455ce5dda6ed22f65637ab49731aea59becbde8 Mon Sep 17 00:00:00 2001 From: Paul Kotov Date: Wed, 29 Jan 2025 11:12:32 +0100 Subject: [PATCH 1/2] pkotov87 - change System.Environment]::SetEnvironmentVariable() to Set-ItemProperty --- lib/puppet/provider/dsc_base_provider/dsc_base_provider.rb | 2 +- .../dsc_base_provider/invoke_dsc_resource_postscript.ps1 | 3 ++- .../provider/dsc_base_provider/dsc_base_provider_spec.rb | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/puppet/provider/dsc_base_provider/dsc_base_provider.rb b/lib/puppet/provider/dsc_base_provider/dsc_base_provider.rb index cd977738..be189e0b 100644 --- a/lib/puppet/provider/dsc_base_provider/dsc_base_provider.rb +++ b/lib/puppet/provider/dsc_base_provider/dsc_base_provider.rb @@ -773,7 +773,7 @@ def munge_psmodulepath(resource) <<~MUNGE_PSMODULEPATH.strip $UnmungedPSModulePath = [System.Environment]::GetEnvironmentVariable('PSModulePath','machine') $MungedPSModulePath = $env:PSModulePath + ';#{vendor_path}' - [System.Environment]::SetEnvironmentVariable('PSModulePath', $MungedPSModulePath, [System.EnvironmentVariableTarget]::Machine) + Set-ItemProperty -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment' -Name 'PSModulePath' -Value $MungedPSModulePath $env:PSModulePath = [System.Environment]::GetEnvironmentVariable('PSModulePath','machine') MUNGE_PSMODULEPATH end diff --git a/lib/puppet/provider/dsc_base_provider/invoke_dsc_resource_postscript.ps1 b/lib/puppet/provider/dsc_base_provider/invoke_dsc_resource_postscript.ps1 index ffbbf029..7e8e7d41 100644 --- a/lib/puppet/provider/dsc_base_provider/invoke_dsc_resource_postscript.ps1 +++ b/lib/puppet/provider/dsc_base_provider/invoke_dsc_resource_postscript.ps1 @@ -6,7 +6,8 @@ Try { } Finally { If (![string]::IsNullOrEmpty($UnmungedPSModulePath)) { # Reset the PSModulePath - [System.Environment]::SetEnvironmentVariable('PSModulePath', $UnmungedPSModulePath, [System.EnvironmentVariableTarget]::Machine) + #[System.Environment]::SetEnvironmentVariable('PSModulePath', $UnmungedPSModulePath, [System.EnvironmentVariableTarget]::Machine) #commented becose of long execution time + Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' -Name 'PSModulePath' -Value $UnmungedPSModulePath $env:PSModulePath = [System.Environment]::GetEnvironmentVariable('PSModulePath', 'machine') } } diff --git a/spec/unit/puppet/provider/dsc_base_provider/dsc_base_provider_spec.rb b/spec/unit/puppet/provider/dsc_base_provider/dsc_base_provider_spec.rb index fc472c43..3edc007f 100644 --- a/spec/unit/puppet/provider/dsc_base_provider/dsc_base_provider_spec.rb +++ b/spec/unit/puppet/provider/dsc_base_provider/dsc_base_provider_spec.rb @@ -1529,7 +1529,8 @@ end it 'updates the system PSModulePath to $MungedPSModulePath' do - expect(result).to match(/SetEnvironmentVariable\('PSModulePath', \$MungedPSModulePath/) + -Name 'PSModulePath' -Value $MungedPSModulePath + expect(result).to match(/-Name 'PSModulePath' -Value \$MungedPSModulePath/) end it 'sets the process level PSModulePath to the modified system PSModulePath' do From 9d88d215cb0282d75c1b9145639e1d19160e5fc5 Mon Sep 17 00:00:00 2001 From: Paul Kotov Date: Wed, 29 Jan 2025 11:34:21 +0100 Subject: [PATCH 2/2] pkotov87 - change System.Environment]::SetEnvironmentVariable() to Set-ItemProperty --- .../dsc_base_provider/invoke_dsc_resource_postscript.ps1 | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/puppet/provider/dsc_base_provider/invoke_dsc_resource_postscript.ps1 b/lib/puppet/provider/dsc_base_provider/invoke_dsc_resource_postscript.ps1 index 7e8e7d41..87cc7365 100644 --- a/lib/puppet/provider/dsc_base_provider/invoke_dsc_resource_postscript.ps1 +++ b/lib/puppet/provider/dsc_base_provider/invoke_dsc_resource_postscript.ps1 @@ -6,7 +6,6 @@ Try { } Finally { If (![string]::IsNullOrEmpty($UnmungedPSModulePath)) { # Reset the PSModulePath - #[System.Environment]::SetEnvironmentVariable('PSModulePath', $UnmungedPSModulePath, [System.EnvironmentVariableTarget]::Machine) #commented becose of long execution time Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' -Name 'PSModulePath' -Value $UnmungedPSModulePath $env:PSModulePath = [System.Environment]::GetEnvironmentVariable('PSModulePath', 'machine') }