diff --git a/lib/core/icingaagent/getters/Get-IcingaAgentServicePermission.psm1 b/lib/core/icingaagent/getters/Get-IcingaAgentServicePermission.psm1 index ffe9ae9..a0f3dba 100644 --- a/lib/core/icingaagent/getters/Get-IcingaAgentServicePermission.psm1 +++ b/lib/core/icingaagent/getters/Get-IcingaAgentServicePermission.psm1 @@ -1,6 +1,6 @@ function Get-IcingaAgentServicePermission() { - $SystemPermissions = New-TemporaryFile; + $SystemPermissions = New-IcingaTemporaryFile; $SystemOutput = Start-IcingaProcess -Executable 'secedit.exe' -Arguments ([string]::Format('/export /cfg "{0}.inf"', $SystemPermissions)); if ($SystemOutput.ExitCode -ne 0) { diff --git a/lib/core/icingaagent/setters/Set-IcingaAgentServicePermission.psm1 b/lib/core/icingaagent/setters/Set-IcingaAgentServicePermission.psm1 index aa11db4..a166b26 100644 --- a/lib/core/icingaagent/setters/Set-IcingaAgentServicePermission.psm1 +++ b/lib/core/icingaagent/setters/Set-IcingaAgentServicePermission.psm1 @@ -5,7 +5,7 @@ function Set-IcingaAgentServicePermission() return; } - $SystemPermissions = New-TemporaryFile; + $SystemPermissions = New-IcingaTemporaryFile; $ServiceUser = Get-IcingaServiceUser; $ServiceUserSID = Get-IcingaUserSID $ServiceUser; $SystemContent = Get-IcingaAgentServicePermission; diff --git a/lib/core/tools/New-IcingaTemporaryFile.psm1 b/lib/core/tools/New-IcingaTemporaryFile.psm1 new file mode 100644 index 0000000..5d1bbc2 --- /dev/null +++ b/lib/core/tools/New-IcingaTemporaryFile.psm1 @@ -0,0 +1,16 @@ +function New-IcingaTemporaryFile() +{ + [string]$TmpFile = ''; + [string]$FilePath = ''; + + while ($TRUE) { + $TmpFile = [string]::Format('tmp_icinga{0}.tmp', (Get-Random)); + $FilePath = Join-Path $Env:TMP -ChildPath $TmpFile; + + if ((Test-Path $FilePath) -eq $FALSE) { + break; + } + } + + return (New-Item -Path $FilePath -ItemType File); +}