icinga-powershell-framework/lib/core/icingaagent/setters/Set-IcingaServiceEnvironment.psm1

88 lines
3.2 KiB
PowerShell
Raw Normal View History

function Set-IcingaServiceEnvironment()
{
param (
[switch]$Force = $FALSE
);
# Don't do anything if we are not inside an administrative shell
if ((Test-AdministrativeShell) -eq $FALSE) {
return;
}
# 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) {
$Global:Icinga.Protected.Add(
'Environment',
@{ }
);
}
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',
@{
'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',
@{
'Status' = '';
'Present' = $FALSE;
'Name' = 'icingapowershell';
'DisplayName' = 'icingapowershell';
'User' = 'NT Authority\NetworkService';
'ServicePath' = '';
}
);
}
if ($Global:Icinga.Protected.Environment.FetchedServices -And $Force -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';
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') {
$Global:Icinga.Protected.Environment.'Icinga Service'.User = 'NT Authority\NetworkService';
}
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;
}