mirror of
https://github.com/Icinga/icinga-powershell-framework.git
synced 2026-02-03 04:09:29 -05:00
Merge pull request #714 from Icinga:fix/missing_service_environment_data
Fix: Missing environment service information on some systems Fixes missing service environment information during initial setup of Icinga for Windows v1.12 on some systems
This commit is contained in:
commit
354c78a088
3 changed files with 64 additions and 14 deletions
|
|
@ -17,6 +17,7 @@ Released closed milestones can be found on [GitHub](https://github.com/Icinga/ic
|
|||
|
||||
* [#707](https://github.com/Icinga/icinga-powershell-framework/pull/707) Fixes size of the `Icinga for Windows` eventlog by setting it to `20MiB`, allowing to store more events before they are overwritten
|
||||
* [#710](https://github.com/Icinga/icinga-powershell-framework/pull/710) Fixes various console errors while running Icinga for Windows outside of an administrative shell
|
||||
* [#714](https://github.com/Icinga/icinga-powershell-framework/pull/714) Fixes missing service environment information during initial setup of Icinga for Windows v1.12 on some systems
|
||||
|
||||
## 1.12.0 (2024-03-26)
|
||||
|
||||
|
|
|
|||
|
|
@ -71,8 +71,23 @@ function New-IcingaEnvironmentVariable()
|
|||
$Global:Icinga.Protected.Add('GarbageCollector', @{ });
|
||||
$Global:Icinga.Protected.Add(
|
||||
'Environment', @{
|
||||
'Icinga Service' = $null;
|
||||
'PowerShell Service' = $null;
|
||||
'Icinga Service' = @{
|
||||
'Status' = '';
|
||||
'Present' = $FALSE;
|
||||
'Name' = 'icinga2';
|
||||
'DisplayName' = 'icinga2';
|
||||
'User' = 'NT Authority\NetworkService';
|
||||
'ServicePath' = '';
|
||||
};
|
||||
'PowerShell Service' = @{
|
||||
'Status' = '';
|
||||
'Present' = $FALSE;
|
||||
'Name' = 'icingapowershell';
|
||||
'DisplayName' = 'icingapowershell';
|
||||
'User' = 'NT Authority\NetworkService';
|
||||
'ServicePath' = '';
|
||||
};
|
||||
'FetchedServices' = $FALSE;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,19 +4,11 @@ function Set-IcingaServiceEnvironment()
|
|||
[switch]$Force = $FALSE
|
||||
);
|
||||
|
||||
if ($null -ne $Global:Icinga.Protected.Environment.'Icinga Service' -And $null -ne $Global:Icinga.Protected.Environment.'PowerShell Service' -And $Force -eq $FALSE) {
|
||||
return;
|
||||
}
|
||||
|
||||
# Don't do anything if we are not inside an administrative shell
|
||||
if ((Test-AdministrativeShell) -eq $FALSE) {
|
||||
return;
|
||||
}
|
||||
|
||||
# Use scheduled tasks to fetch our current service configuration for faster load times afterwards
|
||||
$IcingaService = Invoke-IcingaWindowsScheduledTask -JobType GetWindowsService -ObjectName 'icinga2';
|
||||
$PowerShellService = Invoke-IcingaWindowsScheduledTask -JobType GetWindowsService -ObjectName 'icingapowershell';
|
||||
|
||||
# Ensure we build our internal environment variables based on each version
|
||||
# This is just required to prevent possible issues during upgrades from one version to another
|
||||
if ($Global:Icinga.Protected.ContainsKey('Environment') -eq $FALSE) {
|
||||
|
|
@ -26,22 +18,62 @@ function Set-IcingaServiceEnvironment()
|
|||
);
|
||||
}
|
||||
|
||||
if ($Global:Icinga.Protected.ContainsKey('Environment') -eq $FALSE) {
|
||||
$Global:Icinga.Protected.Add(
|
||||
'Environment',
|
||||
@{ }
|
||||
);
|
||||
}
|
||||
|
||||
if ($Global:Icinga.Protected.Environment.ContainsKey('FetchedServices') -eq $FALSE) {
|
||||
$Global:Icinga.Protected.Environment.Add(
|
||||
'FetchedServices', $FALSE
|
||||
);
|
||||
}
|
||||
|
||||
if ($Global:Icinga.Protected.Environment.ContainsKey('Icinga Service') -eq $FALSE) {
|
||||
$Global:Icinga.Protected.Environment.Add(
|
||||
'Icinga Service',
|
||||
$null
|
||||
@{
|
||||
'Status' = '';
|
||||
'Present' = $FALSE;
|
||||
'Name' = 'icinga2';
|
||||
'DisplayName' = 'icinga2';
|
||||
'User' = 'NT Authority\NetworkService';
|
||||
'ServicePath' = '';
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
if ($Global:Icinga.Protected.Environment.ContainsKey('PowerShell Service') -eq $FALSE) {
|
||||
$Global:Icinga.Protected.Environment.Add(
|
||||
'PowerShell Service',
|
||||
$null
|
||||
@{
|
||||
'Status' = '';
|
||||
'Present' = $FALSE;
|
||||
'Name' = 'icingapowershell';
|
||||
'DisplayName' = 'icingapowershell';
|
||||
'User' = 'NT Authority\NetworkService';
|
||||
'ServicePath' = '';
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
$Global:Icinga.Protected.Environment.'Icinga Service' = $IcingaService.Service;
|
||||
$Global:Icinga.Protected.Environment.'PowerShell Service' = $PowerShellService.Service;
|
||||
if ($Global:Icinga.Protected.Environment.FetchedServices) {
|
||||
return;
|
||||
}
|
||||
|
||||
# Use scheduled tasks to fetch our current service configuration for faster load times afterwards
|
||||
$IcingaService = Invoke-IcingaWindowsScheduledTask -JobType GetWindowsService -ObjectName 'icinga2';
|
||||
$PowerShellService = Invoke-IcingaWindowsScheduledTask -JobType GetWindowsService -ObjectName 'icingapowershell';
|
||||
|
||||
if ($null -ne $IcingaService -And $null -ne $IcingaService.Service) {
|
||||
$Global:Icinga.Protected.Environment.'Icinga Service' = $IcingaService.Service;
|
||||
}
|
||||
|
||||
if ($null -ne $PowerShellService -And $null -ne $PowerShellService.Service) {
|
||||
$Global:Icinga.Protected.Environment.'PowerShell Service' = $PowerShellService.Service;
|
||||
}
|
||||
|
||||
# In case the services are not present, ensure defaults are always set
|
||||
if ($Global:Icinga.Protected.Environment.'Icinga Service'.User -eq 'Unknown') {
|
||||
|
|
@ -50,4 +82,6 @@ function Set-IcingaServiceEnvironment()
|
|||
if ($Global:Icinga.Protected.Environment.'PowerShell Service'.User -eq 'Unknown') {
|
||||
$Global:Icinga.Protected.Environment.'PowerShell Service'.User = 'NT Authority\NetworkService';
|
||||
}
|
||||
|
||||
$Global:Icinga.Protected.Environment.FetchedServices = $TRUE;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue