Icinga PowerShell Framework

This PowerShell module will allow to fetch data from Windows hosts and use them for inventory and monitoring solutions. Together with the Icinga Web 2 module, a detailed overview of your Windows infrastructure will be drawn.

Release Icinga for Windows v1.4.0 latest

1.4.0 (2021-03-02)

Issue and PRs

Breaking Changes

There are changes made to the pre-compiled configuration files and Get-IcingaCheckCommandConfig. Please have a look on the upgrading before applying the new configuration files.


  • #180 Ensure check data are separated from each thread and not accessible from one thread to another to prevent conflicting results
  • #193 Adds optional support for adding milliseconds to Get-IcingaUnixTime with the -Milliseconds argument for more detailed time comparison
  • #198 Adds support to flush the content of the Icinga Agent API directory with a single Cmdlet Clear-IcingaAgentApiDirectory
  • #203 Removes experimental state of the Icinga PowerShell Framework code caching and adds docs on how to use the feature
  • #205 Ensure Icinga for Windows configuration file is opened as read-only for every single task besides actually modifying configuration content
  • #207 Adds new Argument -LabelName to New-IcingaCheck, allowing the developer to provide custom label names for checks and override the default based on the check name.
  • #210 Updates the Icinga DSL for building PowerShell arrays to ensure all string values are properly escaped with '. In case the user already wrapped commands with ' by himself, this will not have an effect as we only add single quotes for escaping if they are not present already
  • #211 Adds feature to uninstall single components for Icinga for Windows or to uninstall everything and start entirely from new
  • #213 Added support to fetch network interface for Register-IcingaDirectorSelfServiceHost directly from provided director url
  • #213 Added support for Icinga Framework Code Cache file being deleted once the feature is disabled
  • #213 Added support to suppress any console output for the current PowerShell session by using Disable-IcingaFrameworkConsoleOutput and to enable it again by using Enable-IcingaFrameworkConsoleOutput
  • #213 Added support for -Release argument for Get-IcingaFrameworkServiceBinary suppressing questions and using GitHub as source directly if set
  • #213 Added support to color console output by using Write-IcingaConsolePlain with the new argument -ForeColor
  • #213 Added new feature to write Icinga for Windows console headers more easily, better structured and formatted with Write-IcingaConsoleHeader by adding line content as array elements


  • #206 Fixes background service check daemon for collecting metrics over time which will no longer share data between configured checks which might cause higher CPU load and a possible memory leak
  • #208 Fixes Convert-IcingaPluginThresholds which sometimes did not return proper numeric usable values for our internal functions, causing issues on plugin calls. In addition the function now also supports the handling for % units.
  • #213 Fixed possible crash on Get-IcingaAgentFeatures if PowerShell is not running as administrator and therefor the command icinga2 feature list can not be processed
  • #213 Fixed ConvertTo-IcingaSecureString to return $null for empty strings instead of throwing an exception
  • #214 Fixes wrong [Unknown] PluginNotInstalled exception because of new plugin configuration and wrong checking against APi result in case feature is enabled
  • #215 Fixes wrong used variable for arguments on API call checks


  • #204 Adds experimental feature to forward checks executed by the Icinga Agent to an internal REST-Api, to reduce the performance impact on systems with lower resources available
  • #213 Adds new experimental feature Management Console for better and easier management for Icinga for Windows and improved automation and deployed.


Release tarball
application/gzip 2021-03-01 Download from Github

Release Icinga for Windows v1.3.1

1.3.1 (2021-02-04)

Issue and PRs


  • #186 Fixes path handling for custom local/web path sources for service binary installation
  • #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 Fixes wrong documented user group for accessing Performance Counter objects which should be Performance Monitor Users
  • #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 Fix Agent installer crash on package lookup with different files in directory
  • #196 Fix Icinga 2 .conf file generator to no longer generate invalid plain configuration files
  • #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


Release tarball
application/gzip 2021-02-03 Download from Github

Release Icinga for Windows v1.3.0

1.3.0 (2020-12-01)

Issue and PRs

Breaking Changes


Icinga PowerShell Kickstart


  • #19 Add support for proxy servers for web calls and re-arranges content from lib/web to lib/webserver and uses lib/web for new proxy/web calls
  • #121 Adds feature allowing sharing of local variables with Icinga Shell, by using -ArgumentList. They can then be accessed by using $IcingaShellArgs with the correct array index id, following the order of items added to -ArgumentList
  • #136 Adds support to ignore empty check packages and return Ok instead of Unknown if -IgnoreEmptyPackage is set on New-IcingaCheckPackage
  • #137 Adds Cmdlet to compare a DateTime object with the current DateTime and return the offset as Integer in seconds
  • #139 Add Cmdlet Start-IcingaShellAsUser to open an Icinga Shell as different user for testing
  • #141 Adds Cmdlet Convert-IcingaPluginThresholds as generic approach to convert Icinga Thresholds with units to the lowest unit of this type.
  • #134 Adds Cmdlet Test-IcingaWindowsInformation to check if a WMI class exist and if we can fetch data from it. In addition we add support for binary value comparison with the new Cmdlet Test-IcingaBinaryOperator
  • #142 Experimental: Adds feature to cache the Framework code into a single file to speed up the entire loading process, mitigating the impact on performance on systems with few CPU cores. You enable disables this feature by using Enable-IcingaFrameworkCodeCache and Disable-IcingaFrameworkCodeCache. Updating the cache is done with Write-IcingaFrameworkCodeCache
  • #149 Adds support to add Wmi permissions for a specific user and namespace with Add-IcingaWmiPermissions. In addition you can remove users from Wmi namespaces by using Remove-IcingaWmiPermissions
  • #153 Adds support to add a knowledge base id to Exit-IcingaThrowException for easier referencing. This should mostly be used for custom messages, as we should track the main knowledge base id's inside the messages directly. Native messages should be split in a hashtable with a Message and IWKB key
  • #155 Adds support to write all objects collected by Get-IcingaWindowsInformation into the Windows EventLog in case the debug output for the Icinga PowerShell Framework is enabled.
  • #162 Adds feature to test the length of plugin custom variables during config generation and throws error in case the total length is bigger than 64 digits, as imports into the Icinga Director by using baskets is not possible otherwise
  • #163 Adds native support for writing Icinga 2 configuration for plugins and allows to easy publish new configurations for modules with the new Cmdlet Publish-IcingaPluginConfiguration
  • #164 Adds exit after calling icinga on Windows Terminal integration to ensure the shell will close in case the Icinga shell is closed
  • #168 Adds support for new Icinga Director SelfService config arguments which will now ensure the wizard will run without asking questions by using the Icinga Director configuration (requires Icinga Director 1.8 or later)


  • #059, #060 Fixes interface handling for multiple interfaces and returns only the main interface by fallback to routing table and adds support for Windows 2008 R2
  • #114#146 Fixes Icinga Agent API being wrongly disabled after successful certificate configuration and installation
  • #127 Fixes wrong error message on failed MSSQL connection due to database not reachable by using -IntegratedSecurity
  • #128 Fixes unhandled output from loading System.Reflection.Assembly which can cause weird side effects for plugin outputs
  • #130 Fix crash while running services as background task to collect metrics over time by missing Performance Counter cache initialisation
  • #133, #147 Fixes an issue while changing the hostname between upper/lower case which might cause unwanted exceptions on one hand but also required manual signing of requests on the CA master as the signing process was not completed
  • #138 Fixes possible value overflow on Convert-Bytes while converting from anything larger than MB to Bytes
  • #140 Fixes version fetching for not loaded modules during upgrades/plugin calls with Get-IcingaPowerShellModuleVersion
  • #143 Fixes the annoying hint from the analyzer to check space before open brace
  • #152 Fixes incorrect rendering for empty arrays which used $null incorrectly instead of @() and fixed ValidateSet which now also supports arrays as data type
  • #159 Fixes crash during update of the Icinga Framework, caused by the newly introduced experimental feature for code caching
  • #165 Fixes fetching for Icinga Agent certificate for REST-Api daemon on upper/lower case hostname mismatch
  • #166 Fixes fetching of Icinga Agent MSI packages by correctly comparing versions to ensure we always use the latest version and fixes release usage for local/network drive sources
  • #167 Fixes error while writing EventLog entries with too large message size
  • #177 Fixes Wmi permissions to allow domain accounts while not being locally known on the system


Release tarball
application/gzip 2020-11-30 Download from Github
Newer Older