Prefer starttype of services fetching over WMI

This commit is contained in:
Lord Hepipud 2021-01-21 15:16:43 +01:00
parent d164fae558
commit c7d0a923a2
3 changed files with 34 additions and 2 deletions

View file

@ -18,6 +18,7 @@ Released closed milestones can be found on [GitHub](https://github.com/Icinga/ic
* [#186](https://github.com/Icinga/icinga-powershell-framework/issues/186) Fixes path handling for custom local/web path sources for service binary installation * [#186](https://github.com/Icinga/icinga-powershell-framework/issues/186) Fixes path handling for custom local/web path sources for service binary installation
* [#188](https://github.com/Icinga/icinga-powershell-framework/pull/188) Removes hardcoded zones `director-global` and `global-zones` which were always set regardless of user specification. This fix will ensure the user has the option to add or not add these zones * [#188](https://github.com/Icinga/icinga-powershell-framework/pull/188) Removes hardcoded zones `director-global` and `global-zones` which were always set regardless of user specification. This fix will ensure the user has the option to add or not add these zones
* [#189](https://github.com/Icinga/icinga-powershell-framework/pull/189) Fixes wrong documented user group for accessing Performance Counter objects which should be `Performance Monitor Users` * [#189](https://github.com/Icinga/icinga-powershell-framework/pull/189) Fixes wrong documented user group for accessing Performance Counter objects which should be `Performance Monitor Users`
* [#192](https://github.com/Icinga/icinga-powershell-framework/pull/192) Fixes code base for `Invoke-IcingaCheckService` by preferring to fetch the startup type of services by using WMI instead of `Get-Services`, as the result of `Get-Services` might be empty in some cases
* [#195](https://github.com/Icinga/icinga-powershell-framework/pull/195) Fix Agent installer crash on package lookup with different files in directory * [#195](https://github.com/Icinga/icinga-powershell-framework/pull/195) Fix Agent installer crash on package lookup with different files in directory
* [#197](https://github.com/Icinga/icinga-powershell-framework/pull/197) Fixes progress bar appearance on check outputs for certain plugins, by disabling the entire PowerShell progress bar during the usage of Icinga for Windows * [#197](https://github.com/Icinga/icinga-powershell-framework/pull/197) Fixes progress bar appearance on check outputs for certain plugins, by disabling the entire PowerShell progress bar during the usage of Icinga for Windows

View file

@ -26,6 +26,8 @@ function Get-IcingaServices()
[array]$DependingServices = $null; [array]$DependingServices = $null;
$ServiceExitCode = 0; $ServiceExitCode = 0;
[string]$ServiceUser = ''; [string]$ServiceUser = '';
[int]$StartModeId = 5;
[string]$StartMode = 'Unknown';
if ($Exclude -contains $service.ServiceName) { if ($Exclude -contains $service.ServiceName) {
continue; continue;
@ -35,6 +37,10 @@ function Get-IcingaServices()
if ($wmiService.Name -eq $service.ServiceName) { if ($wmiService.Name -eq $service.ServiceName) {
$ServiceUser = $wmiService.StartName; $ServiceUser = $wmiService.StartName;
$ServiceExitCode = $wmiService.ExitCode; $ServiceExitCode = $wmiService.ExitCode;
if ([string]::IsNullOrEmpty($wmiService.StartMode) -eq $FALSE) {
$StartModeId = ([int]$IcingaEnums.ServiceWmiStartupType[$wmiService.StartMode]);
$StartMode = $IcingaEnums.ServiceStartupTypeName[$StartModeId];
}
break; break;
} }
} }
@ -80,8 +86,8 @@ function Get-IcingaServices()
}; };
'ServiceHandle' = $service.ServiceHandle; 'ServiceHandle' = $service.ServiceHandle;
'StartType' = @{ 'StartType' = @{
'raw' = [int]$service.StartType; 'raw' = $StartModeId;
'value' = $service.StartType; 'value' = $StartMode;
}; };
'ServiceUser' = $ServiceUser; 'ServiceUser' = $ServiceUser;
'ExitCode' = $ServiceExitCode; 'ExitCode' = $ServiceExitCode;

View file

@ -38,6 +38,28 @@
'c' = 'counter'; 'c' = 'counter';
}; };
<##################################################################################################
################# Service Enums ##################################################################
##################################################################################################>
[hashtable]$ServiceStartupTypeName = @{
0 = 'Boot';
1 = 'System';
2 = 'Automatic';
3 = 'Manual';
4 = 'Disabled';
5 = 'Unknown'; # Custom
}
[hashtable]$ServiceWmiStartupType = @{
'Boot' = 0;
'System' = 1;
'Auto' = 2;
'Manual' = 3;
'Disabled' = 4;
'Unknown' = 5; # Custom
}
<# <#
# Once we defined a new enum hashtable above, simply add it to this list # Once we defined a new enum hashtable above, simply add it to this list
# to make it available within the entire module. # to make it available within the entire module.
@ -50,6 +72,9 @@
IcingaExitCodeText = $IcingaExitCodeText; IcingaExitCodeText = $IcingaExitCodeText;
IcingaExitCodeColor = $IcingaExitCodeColor; IcingaExitCodeColor = $IcingaExitCodeColor;
IcingaMeasurementUnits = $IcingaMeasurementUnits; IcingaMeasurementUnits = $IcingaMeasurementUnits;
#services
ServiceStartupTypeName = $ServiceStartupTypeName;
ServiceWmiStartupType = $ServiceWmiStartupType;
} }
Export-ModuleMember -Variable @( 'IcingaEnums' ); Export-ModuleMember -Variable @( 'IcingaEnums' );