Merge pull request #338 from Icinga:feature/mmc_overview_kickstartfilter

Style: Adds mmc list view, kickstart filter, spelling fix

Fixes plenty of spelling mistakes, style guides, views, layouts and other visual topics for the Icinga for Windows Management Console.
This commit is contained in:
Lord Hepipud 2021-08-18 18:45:38 +02:00 committed by GitHub
commit 30107e8e32
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 200 additions and 67 deletions

View file

@ -20,7 +20,7 @@ Released closed milestones can be found on [GitHub](https://github.com/Icinga/ic
* [#328](https://github.com/Icinga/icinga-powershell-framework/pull/328) Fixes installer while using installation files or the installation command, which did not overwrite default values with custom values
* [#330](https://github.com/Icinga/icinga-powershell-framework/pull/330) Fixes `Remove-ItemSecure` which was not using all args and might fail on empty path entries
* [#332](https://github.com/Icinga/icinga-powershell-framework/pull/332) Fixes Icinga Director Self-Service ticket handling, which was not working within the Icinga Management Console
* [#335](https://github.com/Icinga/icinga-powershell-framework/pull/335) Fixex Icinga Director Self-Service Zones and CA config for legacy installation wizard
* [#335](https://github.com/Icinga/icinga-powershell-framework/pull/335) Fixes Icinga Director Self-Service Zones and CA config for legacy installation wizard
### Enhancements
@ -35,6 +35,7 @@ Released closed milestones can be found on [GitHub](https://github.com/Icinga/ic
* [#322](https://github.com/Icinga/icinga-powershell-framework/pull/322) Remove legacy import feature from Framework and replace it with a dummy function, as no longer required by Icinga for Windows
* [#323](https://github.com/Icinga/icinga-powershell-framework/pull/323) Adds `-RebuildCache` switch to `icinga` command alias and `Invoke-IcingaCommand`, for quicker cache re-creation for developers
* [#333](https://github.com/Icinga/icinga-powershell-framework/pull/333) Adds Cmdlet `Test-IcingaForWindowsService` to test the Icinga for Windows service configuration
* [#338](https://github.com/Icinga/icinga-powershell-framework/pull/338) Improves various styles, outputs and view for the Icinga for Windows Management Console and fixes some spelling mistakes
## 1.5.2 (2021-07-09)

View file

@ -46,9 +46,9 @@ Which version of the "Icinga Framework" do you want to install? (release/snapsho
[Notice]: Framework update has been completed. Please start a new PowerShell instance now to complete the update
[Passed]: Icinga Agent service is installed
[Passed]: The specified user "NT Authority\NetworkService" is allowed to run as service
[Passed]: Directory "C:\ProgramData\icinga2\etc" is accessible and writeable by the Icinga Service User "NT Authority\NetworkService"
[Passed]: Directory "C:\ProgramData\icinga2\var" is accessible and writeable by the Icinga Service User "NT Authority\NetworkService"
[Passed]: Directory "C:\Program Files\WindowsPowerShell\Modules\icinga-powershell-framework\cache" is accessible and writeable by the Icinga Service User "NT Authority\NetworkService"
[Passed]: Directory "C:\ProgramData\icinga2\etc" is accessible and writable by the Icinga Service User "NT Authority\NetworkService"
[Passed]: Directory "C:\ProgramData\icinga2\var" is accessible and writable by the Icinga Service User "NT Authority\NetworkService"
[Passed]: Directory "C:\Program Files\WindowsPowerShell\Modules\icinga-powershell-framework\cache" is accessible and writable by the Icinga Service User "NT Authority\NetworkService"
[Passed]: Icinga Agent configuration is valid
[Passed]: Icinga Agent debug log is disabled
[Notice]: Starting Icinga Agent service

View file

@ -17,9 +17,9 @@ Once executed you will receive a status of tests which are performed:
```text
[Passed]: Icinga Agent service is installed
[Passed]: The specified user "NT AUTHORITY\NetworkService" is allowed to run as service
[Passed]: Directory "C:\ProgramData\icinga2\etc" is accessible and writeable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\ProgramData\icinga2\var" is accessible and writeable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\Program Files\WindowsPowerShell\Modules\icinga-powershell-framework\cache" is accessible and writeable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\ProgramData\icinga2\etc" is accessible and writable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\ProgramData\icinga2\var" is accessible and writable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\Program Files\WindowsPowerShell\Modules\icinga-powershell-framework\cache" is accessible and writable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Icinga Agent configuration is valid
[Passed]: Icinga Agent debug log is disabled
```
@ -29,9 +29,9 @@ In order to make the Icinga Agent and the Icinga PowerShell Framework work prope
```text
[Passed]: Icinga Agent service is installed
[Passed]: The specified user "NT AUTHORITY\NetworkService" is allowed to run as service
[Passed]: Directory "C:\ProgramData\icinga2\etc" is accessible and writeable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\ProgramData\icinga2\var" is accessible and writeable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\Program Files\WindowsPowerShell\Modules\icinga-powershell-framework\cache" is accessible and writeable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\ProgramData\icinga2\etc" is accessible and writable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\ProgramData\icinga2\var" is accessible and writable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\Program Files\WindowsPowerShell\Modules\icinga-powershell-framework\cache" is accessible and writable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Icinga Agent configuration is valid
[Warning]: The debug log of the Icinga Agent is enabled. Please keep in mind to disable it once testing is done, as a huge amount of data is generated
```
@ -43,10 +43,10 @@ In addition for testing, the Icinga PowerShell Framework will suggest methods to
```text
[Passed]: Icinga Agent service is installed
[Passed]: The specified user "NT AUTHORITY\NetworkService" is allowed to run as service
[Passed]: Directory "C:\ProgramData\icinga2\etc" is accessible and writeable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\ProgramData\icinga2\etc" is accessible and writable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Failed]: Directory "C:\ProgramData\icinga2\var" is not accessible by the Icinga Service User "NT AUTHORITY\NetworkService"
\_ Please run the following command to fix this issue: Set-IcingaAcl -Directory 'C:\ProgramData\icinga2\var'
[Passed]: Directory "C:\Program Files\WindowsPowerShell\Modules\icinga-powershell-framework\cache" is accessible and writeable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\Program Files\WindowsPowerShell\Modules\icinga-powershell-framework\cache" is accessible and writable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Icinga Agent configuration is valid
[Passed]: Icinga Agent debug log is disabled
```
@ -58,7 +58,7 @@ Set-IcingaAcl -Directory 'C:\ProgramData\icinga2\var';
```
```text
[Passed]: Directory "C:\ProgramData\icinga2\var" is accessible and writeable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\ProgramData\icinga2\var" is accessible and writable by the Icinga Service User "NT AUTHORITY\NetworkService"
```
Now if we run the test again, the issue is resolved:
@ -66,9 +66,9 @@ Now if we run the test again, the issue is resolved:
```text
[Passed]: Icinga Agent service is installed
[Passed]: The specified user "NT AUTHORITY\NetworkService" is allowed to run as service
[Passed]: Directory "C:\ProgramData\icinga2\etc" is accessible and writeable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\ProgramData\icinga2\var" is accessible and writeable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\Program Files\WindowsPowerShell\Modules\icinga-powershell-framework\cache" is accessible and writeable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\ProgramData\icinga2\etc" is accessible and writable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\ProgramData\icinga2\var" is accessible and writable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\Program Files\WindowsPowerShell\Modules\icinga-powershell-framework\cache" is accessible and writable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Icinga Agent configuration is valid
[Passed]: Icinga Agent debug log is disabled
```
@ -84,9 +84,9 @@ Test-IcingaAgent;`
```text
[Passed]: Icinga Agent service is installed
[Passed]: The specified user "NT AUTHORITY\NetworkService" is allowed to run as service
[Passed]: Directory "C:\ProgramData\icinga2\etc" is accessible and writeable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\ProgramData\icinga2\var" is accessible and writeable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\Program Files\WindowsPowerShell\Modules\icinga-powershell-framework\cache" is accessible and writeable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\ProgramData\icinga2\etc" is accessible and writable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\ProgramData\icinga2\var" is accessible and writable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Passed]: Directory "C:\Program Files\WindowsPowerShell\Modules\icinga-powershell-framework\cache" is accessible and writable by the Icinga Service User "NT AUTHORITY\NetworkService"
[Failed]: Icinga Agent configuration contains errors. Run this command for getting a detailed error report: "Test-IcingaAgentConfig -WriteStackTrace | Out-Null"
[Passed]: Icinga Agent debug log is disabled
```

View file

@ -33,9 +33,9 @@ Set-IcingaAgentServiceUser -User 'NT AUTHORITY\SYSTEM' -SetPermission;
```text
[Notice]: The Icinga Service User already has permission to run as service
[Passed]: Directory "C:\ProgramData\icinga2\etc" is accessible and writeable by the Icinga Service User "NT AUTHORITY\SYSTEM"
[Passed]: Directory "C:\ProgramData\icinga2\var" is accessible and writeable by the Icinga Service User "NT AUTHORITY\SYSTEM"
[Passed]: Directory "C:\Program Files\WindowsPowerShell\Modules\icinga-powershell-framework\cache" is accessible and writeable by the Icinga Service User "NT AUTHORITY\SYSTEM"
[Passed]: Directory "C:\ProgramData\icinga2\etc" is accessible and writable by the Icinga Service User "NT AUTHORITY\SYSTEM"
[Passed]: Directory "C:\ProgramData\icinga2\var" is accessible and writable by the Icinga Service User "NT AUTHORITY\SYSTEM"
[Passed]: Directory "C:\Program Files\WindowsPowerShell\Modules\icinga-powershell-framework\cache" is accessible and writable by the Icinga Service User "NT AUTHORITY\SYSTEM"
[Notice]: Service User successfully updated
```
@ -64,7 +64,7 @@ If we how ever run our Cmdlet `Test-IcingaAgent` (which is described [here](32-T
```text
[Failed]: The specified user "icinga" is not allowed to run as service
[Passed]: Directory "C:\ProgramData\icinga2\etc" is accessible and writeable by the Icinga Service User "icinga"
[Passed]: Directory "C:\ProgramData\icinga2\etc" is accessible and writable by the Icinga Service User "icinga"
[Failed]: Directory "C:\ProgramData\icinga2\var" is not accessible by the Icinga Service User "icinga"
\_ Please run the following command to fix this issue: Set-IcingaAcl -Directory 'C:\ProgramData\icinga2\var'
```
@ -78,9 +78,9 @@ Set-IcingaAgentServiceUser -User $cred.UserName -Password $cred.Password -SetPer
```text
[Passed]: The specified user "icinga" is allowed to run as service
[Passed]: Directory "C:\ProgramData\icinga2\etc" is accessible and writeable by the Icinga Service User "icinga"
[Passed]: Directory "C:\ProgramData\icinga2\var" is accessible and writeable by the Icinga Service User "icinga"
[Passed]: Directory "C:\Program Files\WindowsPowerShell\Modules\icinga-powershell-framework\cache" is accessible and writeable by the Icinga Service User "icinga"
[Passed]: Directory "C:\ProgramData\icinga2\etc" is accessible and writable by the Icinga Service User "icinga"
[Passed]: Directory "C:\ProgramData\icinga2\var" is accessible and writable by the Icinga Service User "icinga"
[Passed]: Directory "C:\Program Files\WindowsPowerShell\Modules\icinga-powershell-framework\cache" is accessible and writable by the Icinga Service User "icinga"
[Notice]: Service User successfully updated
```

View file

@ -38,9 +38,9 @@ function Test-IcingaAcl()
[string]$messageFormat = 'Directory "{0}" {1} by the Icinga Service User "{2}"';
if ($UserFound) {
if ($HasAccess) {
Write-IcingaTestOutput -Severity 'Passed' -Message ([string]::Format($messageFormat, $Directory, 'is accessible and writeable', $ServiceUser));
Write-IcingaTestOutput -Severity 'Passed' -Message ([string]::Format($messageFormat, $Directory, 'is accessible and writable', $ServiceUser));
} else {
Write-IcingaTestOutput -Severity 'Failed' -Message ([string]::Format($messageFormat, $Directory, 'is accessible but NOT writeable', $ServiceUser));
Write-IcingaTestOutput -Severity 'Failed' -Message ([string]::Format($messageFormat, $Directory, 'is accessible but NOT writable', $ServiceUser));
Write-IcingaConsolePlain "\_ Please run the following command to fix this issue: Set-IcingaAcl -Directory '$Directory'";
}
} else {

View file

@ -103,14 +103,22 @@ function Install-Icinga()
'Help' = 'Allows you to install Icinga for Windows with all required components and options.'
},
@{
'Caption' = 'Install Components';
'Caption' = 'Install components';
'Command' = 'Show-IcingaForWindowsMenuInstallComponents';
'Help' = 'Allows you to install new components for Icinga for Windows from your repositories.';
'Disabled' = (-Not ($global:Icinga.InstallWizard.AdminShell));
},
@{
'Caption' = 'Update environment';
'Caption' = 'Update components';
'Command' = 'Show-IcingaForWindowsMenuUpdateComponents';
'Help' = 'Allows you to modify your current Icinga for Windows installation.';
'Disabled' = (-Not ($global:Icinga.InstallWizard.AdminShell));
},
@{
'Caption' = 'Remove components';
'Command' = 'Show-IcingaForWindowsMenuRemoveComponents';
'Help' = 'Allows you to modify your current Icinga for Windows installation.';
'Disabled' = (-Not ($global:Icinga.InstallWizard.AdminShell));
},
@{
'Caption' = 'Manage environment';
@ -118,10 +126,9 @@ function Install-Icinga()
'Help' = 'Allows you to modify your current Icinga for Windows installation.';
},
@{
'Caption' = 'Remove components';
'Command' = 'Show-IcingaForWindowsMenuRemoveComponents';
'Help' = 'Allows you to modify your current Icinga for Windows installation.';
'Disabled' = (-Not ($global:Icinga.InstallWizard.AdminShell));
'Caption' = 'List environment';
'Command' = 'Show-IcingaForWindowsMenuListEnvironment';
'Help' = 'Shows you an overview of your current Icinga for Windows installation, including installed components and system informations.';
}
) `
-DefaultIndex 0;

View file

@ -28,7 +28,7 @@ function Show-IcingaForWindowsInstallerMenuInstallWindows()
'Disabled' = ([bool]($null -eq (Get-IcingaPowerShellConfig -Path 'Framework.Config.Swap')));
},
@{
'Caption' = 'Reconfigure Environment';
'Caption' = 'Reconfigure environment';
'Command' = 'Invoke-IcingaForWindowsManagementConsoleReconfigureAgent';
'Help' = 'Load the current configuration of Icinga for Windows to modify it.';
'Disabled' = ([bool]($null -eq (Get-IcingaPowerShellConfig -Path 'Framework.Config.Live')));

View file

@ -1,8 +1,7 @@
function Show-IcingaForWindowsManagementConsoleInstallationConfigString()
{
[string]$ConfigurationString = [string]::Format(
"{0}Install-Icinga -InstallCommand '{1}'{0}",
(New-IcingaNewLine),
"Install-Icinga -InstallCommand '{0}'",
(Get-IcingaForWindowsManagementConsoleConfigurationString -Compress)
);
@ -23,5 +22,6 @@ function Show-IcingaForWindowsManagementConsoleInstallationConfigString()
-ConfigLimit 1 `
-DefaultIndex 'c' `
-ReadOnly `
-PlainTextOutput `
-Hidden;
}

View file

@ -29,4 +29,4 @@ function Show-IcingaForWindowsInstallerMenuSelectInstallIcingaForWindowsService(
-Advanced:$Advanced;
}
Set-Alias -Name 'IfW-InstallPowerShellService' -Value 'Show-IcingaForWindowsInstallerMenuSelectInstallIcingaForWindowsService';
Set-Alias -Name 'IfW-InstallService' -Value 'Show-IcingaForWindowsInstallerMenuSelectInstallIcingaForWindowsService';

View file

@ -0,0 +1,19 @@
function Show-IcingaForWindowsMenuListEnvironment()
{
Show-IcingaForWindowsInstallerMenu `
-Header 'Icinga for Windows environment overview:' `
-Entries @(
@{
'Caption' = '';
'Command' = 'Install-Icinga';
'Help' = 'A summary of your current Icinga for Windows installation';
}
) `
-AddConfig `
-DefaultValues @(([string]::Join("`n", (Show-Icinga -SkipHeader)))) `
-ConfigLimit 1 `
-DefaultIndex 'c' `
-ReadOnly `
-PlainTextOutput `
-Hidden;
}

View file

@ -17,7 +17,8 @@ function Show-IcingaForWindowsInstallerMenu()
[switch]$HiddenConfigElement = $FALSE,
[switch]$ReadOnly = $FALSE,
[switch]$Automated = $FALSE,
[switch]$Advanced = $FALSE
[switch]$Advanced = $FALSE,
[switch]$PlainTextOutput = $FALSE
);
if ((Test-IcingaForWindowsInstallationHeaderPrint) -eq $FALSE -And (Get-IcingaFrameworkDebugMode) -eq $FALSE) {
@ -83,19 +84,18 @@ function Show-IcingaForWindowsInstallerMenu()
);
if ($global:Icinga.InstallWizard.AdminShell -eq $FALSE) {
$ConsoleHeaderLines += '[Warning]: Run this shell as Administrator to unlock all features'
$ConsoleHeaderLines += '[Warning]: Run this shell with administrative privileges to unlock all features'
}
$ConsoleHeaderLines += @(
'This is an experimental feature and might contain bugs',
'Please provide us with feedback, issues and input at',
'https://github.com/Icinga/icinga-powershell-framework/issues'
)
if ($PSVersionTable.PSVersion -lt '5.0.0.0') {
$ConsoleHeaderLines += ([string]::Format('[Warning]: Update to PowerShell version >=5.0 from currently {0} to unlock all features (like JEA)', $PSVersionTable.PSVersion.ToString(2)));
}
Write-IcingaConsoleHeader -HeaderLines $ConsoleHeaderLines;
Write-IcingaConsolePlain '';
Write-IcingaConsolePlain $Header;
Write-IcingaConsolePlain '';
}
@ -144,12 +144,16 @@ function Show-IcingaForWindowsInstallerMenu()
}
if ($StoredValues.Count -ne 0) {
if ($PlainTextOutput) {
Write-IcingaConsolePlain (ConvertFrom-IcingaArrayToString -Array $StoredValues) -ForeColor Cyan;
} else {
if ($PasswordInput -eq $FALSE) {
Write-IcingaConsolePlain ([string]::Format(' {0}', (ConvertFrom-IcingaArrayToString -Array $StoredValues -AddQuotes))) -ForeColor Cyan;
} else {
Write-IcingaConsolePlain ([string]::Format(' {0}', (ConvertFrom-IcingaArrayToString -Array $StoredValues -AddQuotes -SecureContent))) -ForeColor Cyan;
}
}
}
if ($AddConfig) {
if ($global:Icinga.InstallWizard.ShowHelp -And ([string]::IsNullOrEmpty($Entries[0].Help)) -eq $FALSE) {
@ -163,7 +167,11 @@ function Show-IcingaForWindowsInstallerMenu()
Write-IcingaConsolePlain '';
if ($global:Icinga.InstallWizard.DisplayAdvanced) {
if ($global:Icinga.InstallWizard.ShowAdvanced -eq $FALSE) {
$MenuNavigation = [string]::Format('{0} [a] Advanced', $MenuNavigation)
} else {
$MenuNavigation = [string]::Format('{0} [a] Hide Advanced', $MenuNavigation)
}
}
$MenuNavigation = [string]::Format('{0} [c] Continue', $MenuNavigation)
@ -172,7 +180,11 @@ function Show-IcingaForWindowsInstallerMenu()
$MenuNavigation = [string]::Format('{0} [d] Delete', $MenuNavigation)
}
if ($global:Icinga.InstallWizard.ShowHelp -eq $FALSE) {
$MenuNavigation = [string]::Format('{0} [h] Help [m] Main', $MenuNavigation)
} else {
$MenuNavigation = [string]::Format('{0} [h] Hide Help [m] Main', $MenuNavigation)
}
if ([string]::IsNullOrEmpty($LastParent) -eq $FALSE -Or $global:Icinga.InstallWizard.LastParent.Count -gt 1) {
$MenuNavigation = [string]::Format('{0} [p] Previous', $MenuNavigation)

View file

@ -33,7 +33,8 @@ function Write-IcingaConsoleOutput()
[array]$Objects,
[ValidateSet('Default', 'Black', 'DarkBlue', 'DarkGreen', 'DarkCyan', 'DarkRed', 'DarkMagenta', 'DarkYellow', 'Gray', 'DarkGray', 'Blue', 'Green', 'Cyan', 'Red', 'Magenta', 'Yellow', 'White')]
[string]$ForeColor = 'Default',
[string]$Severity = 'Notice'
[string]$Severity = 'Notice',
[switch]$NoNewLine = $FALSE
);
if ((Test-IcingaFrameworkConsoleOutput) -eq $FALSE) {
@ -67,8 +68,8 @@ function Write-IcingaConsoleOutput()
}
if ($ForeColor -eq 'Default') {
Write-Host $OutputMessage;
Write-Host $OutputMessage -NoNewline:$NoNewLine;
} else {
Write-Host $OutputMessage -ForegroundColor $ForeColor;
Write-Host $OutputMessage -ForegroundColor $ForeColor -NoNewline:$NoNewLine;
}
}

View file

@ -25,12 +25,14 @@ function Write-IcingaConsolePlain()
[string]$Message,
[array]$Objects,
[ValidateSet('Default', 'Black', 'DarkBlue', 'DarkGreen', 'DarkCyan', 'DarkRed', 'DarkMagenta', 'DarkYellow', 'Gray', 'DarkGray', 'Blue', 'Green', 'Cyan', 'Red', 'Magenta', 'Yellow', 'White')]
[string]$ForeColor = 'Default'
[string]$ForeColor = 'Default',
[switch]$NoNewLine = $FALSE
);
Write-IcingaConsoleOutput `
-Message $Message `
-Objects $Objects `
-ForeColor $ForeColor `
-Severity $null;
-Severity $null `
-NoNewLine:$NoNewLine;
}

View file

@ -9,7 +9,22 @@ function Get-IcingaRepositoryPackage()
if ([string]::IsNullOrEmpty($Name)) {
Write-IcingaConsoleError 'You have to provide a component name';
return;
return @{
'HasPackage' = $FALSE;
'Package' = $null;
'Source' = $null;
'Repository' = $null;
};
}
if ($Name.ToLower() -eq 'kickstart') {
return @{
'HasPackage' = $FALSE;
'Package' = $null;
'Source' = $null;
'Repository' = $null;
};
}
$Repositories = Get-IcingaRepositories -ExcludeDisabled;

View file

@ -43,7 +43,7 @@ function Search-IcingaRepository()
foreach ($repoEntry in $RepoContent.Packages.PSObject.Properties.Name) {
if ($repoEntry -NotLike $Name) {
if ($repoEntry -NotLike $Name -Or $Name.ToLower() -eq 'kickstart') {
continue;
}

View file

@ -1,13 +1,35 @@
function Show-Icinga()
{
param (
[switch]$SkipHeader = $FALSE
);
$IcingaInstallation = Get-IcingaInstallation -Release;
[array]$Output = @( 'Icinga for Windows environment' );
[array]$VersionList = @();
[int]$MaxComponentLength = Get-IcingaMaxTextLength -TextArray $IcingaInstallation.Keys;
[int]$MaxVersionLength = Get-IcingaMaxTextLength -TextArray $IcingaInstallation.Values.CurrentVersion;
foreach ($entry in $IcingaInstallation.Keys) {
$LockVersion = Get-IcingaComponentLock -Name $entry;
if ($null -eq $LockVersion) {
$VersionList += [string]$IcingaInstallation[$entry].CurrentVersion;
continue;
}
$VersionList += ([string]::Format('{0}*', $IcingaInstallation[$entry].CurrentVersion));
}
[int]$MaxVersionLength = Get-IcingaMaxTextLength -TextArray $VersionList;
[string]$ComponentHeader = Add-IcingaWhiteSpaceToString -Text 'Component' -Length $MaxComponentLength;
[string]$ComponentLine = Add-IcingaWhiteSpaceToString -Text '---' -Length $MaxComponentLength;
$Output += '-----------';
$Output += '';
if ($SkipHeader) {
[array]$Output = @();
}
$Output += 'Installed components on this system';
$Output += '';
$Output += [string]::Format('{0} {1} Available', $ComponentHeader, ((Add-IcingaWhiteSpaceToString -Text 'Version' -Length $MaxVersionLength)));

View file

@ -7,7 +7,7 @@ function Add-IcingaWhiteSpaceToString()
[int]$LengthOffset = $Length - $Text.Length;
while ($LengthOffset -gt 0) {
while ($LengthOffset -ge 0) {
$Text += ' ';
$LengthOffset -= 1;
}

View file

@ -8,6 +8,7 @@ function Write-IcingaConsoleHeader()
[int]$MaxHeaderLength = 0;
[int]$TableHeaderCount = 0;
[array]$TableHeader = @();
[array]$SeverityData = @();
Import-LocalizedData `
-BaseDirectory (Get-IcingaFrameworkRootPath) `
@ -24,6 +25,10 @@ function Write-IcingaConsoleHeader()
}
foreach ($line in $ParsedHeaders) {
if ($line.Contains('[Notice]') -Or $line.Contains('[Warning]') -Or $line.Contains('Error')) {
continue
}
if ($MaxHeaderLength -lt $line.Length) {
$MaxHeaderLength = $line.Length
}
@ -61,8 +66,34 @@ function Write-IcingaConsoleHeader()
}
}
}
Write-IcingaConsolePlain -Message '**{1} {0} {2}**' -Objects $line, ([string]::Join('', $LeftSpacing)), ([string]::Join('', $RightSpacing));
if ($line.Contains('[Notice]') -Or $line.Contains('[Warning]') -Or $line.Contains('Error')) {
$SeverityData += $line;
continue;
}
$HeaderMessage = [string]::Format('**{1} {0} {2}**', $line, ([string]::Join('', $LeftSpacing)), ([string]::Join('', $RightSpacing)));
Write-IcingaConsolePlain -Message $HeaderMessage;
}
Write-IcingaConsolePlain ([string]::Join('', $TableHeader));
if ($SeverityData.Count -ne 0) {
Write-IcingaConsolePlain -Message '';
foreach ($entry in $SeverityData) {
if (Write-IcingaConsoleTextColorSplit -Pattern '[Warning]' -Message $entry -ForeColor 'DarkYellow') {
continue;
}
if (Write-IcingaConsoleTextColorSplit -Pattern '[Error]' -Message $entry -ForeColor 'Red') {
continue;
}
if (Write-IcingaConsoleTextColorSplit -Pattern '[Notice]' -Message $entry -ForeColor 'Green') {
continue;
}
}
}
}

View file

@ -0,0 +1,23 @@
function Write-IcingaConsoleTextColorSplit()
{
param (
[string]$Pattern = '',
[string]$Message = '',
[ValidateSet('Default', 'Black', 'DarkBlue', 'DarkGreen', 'DarkCyan', 'DarkRed', 'DarkMagenta', 'DarkYellow', 'Gray', 'DarkGray', 'Blue', 'Green', 'Cyan', 'Red', 'Magenta', 'Yellow', 'White')]
[string]$ForeColor = 'Default'
);
if ($Message.Contains($Pattern)) {
[int]$RemoveLength = $Pattern.Length;
[string]$SeverityMsg = $Pattern;
Write-IcingaConsolePlain -Message ($Message.Substring(0, $Message.IndexOf($Pattern))) -NoNewLine;
Write-IcingaConsolePlain -Message $SeverityMsg -ForeColor $ForeColor -NoNewLine;
Write-IcingaConsolePlain -Message ($Message.Substring($Message.IndexOf($Pattern) + $RemoveLength, $Message.Length - $Message.IndexOf($Pattern) - $RemoveLength));
return $TRUE;
}
return $FALSE;
}