From 67c16b0417a34312624e16b182f39ded49157ac4 Mon Sep 17 00:00:00 2001 From: Alexander Stoll Date: Fri, 12 Jul 2019 13:59:02 +0200 Subject: [PATCH] Added bios.psm1 (Library) and a provider/enums.psm1 --- icinga-module-windows.psm1 | 2 + lib/provider/bios.psm1 | 91 ++++++++++++++++++++++++++++++++++++++ lib/provider/enums.psm1 | 72 ++++++++++++++++++++++++++++++ 3 files changed, 165 insertions(+) create mode 100644 lib/provider/bios.psm1 create mode 100644 lib/provider/enums.psm1 diff --git a/icinga-module-windows.psm1 b/icinga-module-windows.psm1 index 3d84e5e..70c3552 100644 --- a/icinga-module-windows.psm1 +++ b/icinga-module-windows.psm1 @@ -9,6 +9,8 @@ #> +$global:IncludeDir = "$PSScriptRoot\lib"; + function Install-Icinga() { [string]$command = Get-Icinga-Command('setup'); diff --git a/lib/provider/bios.psm1 b/lib/provider/bios.psm1 new file mode 100644 index 0000000..ba9655f --- /dev/null +++ b/lib/provider/bios.psm1 @@ -0,0 +1,91 @@ +Import-Module $IncludeDir\provider\enums; + +function Show-IcingaBiosData() +{ + # Lets load some bios informations + $BIOSInformation = Get-CimInstance Win32_BIOS; + [hashtable]$BIOSData = @{}; + + foreach ($bios_properties in $BIOSInformation) { + foreach($bios in $bios_properties.CimInstanceProperties) { + $BIOSData.Add($bios.Name, $bios.Value); + } + } + + return $BIOSData; +} + +function Get-IcingaBiosSerialNumber() +{ + $bios = Get-CimInstance Win32_BIOS; + return @{'value' = $bios.SerialNumber; 'name' = 'SerialNumber'}; +} + +function Get-IcingaBiosVersion() +{ + $bios = Get-CimInstance Win32_BIOS; + return @{'value' = $bios.Version; 'name' = 'Version'}; +} + +function Get-IcingaBiosManufacturer() +{ + $bios = Get-CimInstance Win32_BIOS; + return @{'value' = $bios.Manufacturer; 'name' = 'Manufacturer'}; +} + +# Primary Bios seems to be relevant in dual-bios context +function Get-IcingaBiosPrimaryBios() +{ + $bios = Get-CimInstance Win32_BIOS; + return @{'value' = $bios.PrimaryBIOS; 'name' = 'PrimaryBIOS'}; +} + +function Get-IcingaBiosName() +{ + $bios = Get-CimInstance Win32_BIOS; + return @{'value' = $bios.Name; 'name' = 'Name'}; +} + +function Get-IcingaBiosStatus() +{ + $bios = Get-CimInstance Win32_BIOS; + return @{'value' = $bios.Status; 'name' = 'Status'}; +} + +function Get-IcingaBiosCaption() +{ + $bios = Get-CimInstance Win32_BIOS; + return @{'value' = $bios.Caption; 'name' = 'Caption'}; +} + +function Get-IcingaBiosSMBIOSBIOSVersion() +{ + $bios = Get-CimInstance Win32_BIOS; + return @{'value' = $bios.SMBIOSBIOSVersion; 'name' = 'SMBIOSBIOSVersion'}; +} + +function Get-IcingaBiosSoftwareElementID() +{ + $bios = Get-CimInstance Win32_BIOS; + return @{'value' = $bios.SoftwareElementID; 'name' = 'SoftwareElementID'}; +} + +function Get-IcingaBiosCharacteristics() +{ + param([switch]$Sorted); + + $bios = Get-CimInstance WIN32_BIOS; + [hashtable]$BIOSCharacteristics = @{}; + + foreach ($id in $bios.BiosCharacteristics) { + $BIOSCharacteristics.Add([int]$id, $ProviderEnums.BiosCharacteristics.([int]$id)); + } + + $output = $BIOSCharacteristics; + + if ($sorted) { + $output = $BIOSCharacteristics.GetEnumerator() | Sort-Object name; + } + + return @{'value' = $output; 'name' = 'BiosCharacteristics'}; +} diff --git a/lib/provider/enums.psm1 b/lib/provider/enums.psm1 new file mode 100644 index 0000000..a5425fd --- /dev/null +++ b/lib/provider/enums.psm1 @@ -0,0 +1,72 @@ +[hashtable]$BiosCharacteristics = @{ + 0 = 'Reserved'; + 1 = 'Reserved'; + 2 = 'Unknown'; + 3 = 'BIOS Characteristics Not Supported'; + 4 = 'ISA is supported'; + 5 = 'MCA is supported'; + 6 = 'EISA is supported'; + 7 = 'PCI is supported'; + 8 = 'PC Card (PCMCIA) is supported'; + 9 = 'Plug and Play is supported'; + 10 = 'APM is supported'; + 11 = 'BIOS is Upgradeable (Flash)'; + 12 = 'BIOS shadowing is allowed'; + 13 = 'VL-VESA is supported'; + 14 = 'ESCD support is available'; + 15 = 'Boot from CD is supported'; + 16 = 'Selectable Boot is supported'; + 17 = 'BIOS ROM is socketed'; + 18 = 'Boot From PC Card (PCMCIA) is supported'; + 19 = 'EDD (Enhanced Disk Drive) Specification is supported'; + 20 = 'Int 13h - Japanese Floppy for NEC 9800 1.2mb (3.5, 1k Bytes/Sector, 360 RPM) is supported'; + 21 = 'Int 13h - Japanese Floppy for Toshiba 1.2mb (3.5, 360 RPM) is supported'; + 22 = 'Int 13h - 5.25 / 360 KB Floppy Services are supported'; + 23 = 'Int 13h - 5.25 /1.2MB Floppy Services are supported'; + 24 = 'Int 13h - 3.5 / 720 KB Floppy Services are supported'; + 25 = 'Int 13h - 3.5 / 2.88 MB Floppy Services are supported'; + 26 = 'Int 5h, Print Screen Service is supported'; + 27 = 'Int 9h, 8042 Keyboard services are supported'; + 28 = 'Int 14h, Serial Services are supported'; + 29 = 'Int 17h, printer services are supported'; + 30 = 'Int 10h, CGA/Mono Video Services are supported'; + 31 = 'NEC PC-98'; + 32 = 'ACPI is supported'; + 33 = 'USB Legacy is supported'; + 34 = 'AGP is supported'; + 35 = 'I2O boot is supported'; + 36 = 'LS-120 boot is supported'; + 37 = 'ATAPI ZIP Drive boot is supported'; + 38 = '1394 boot is supported'; + 39 = 'Smart Battery is supported'; + 40 = 'Reserved for BIOS vendor'; + 41 = 'Reserved for BIOS vendor'; + 42 = 'Reserved for BIOS vendor'; + 43 = 'Reserved for BIOS vendor'; + 44 = 'Reserved for BIOS vendor'; + 45 = 'Reserved for BIOS vendor'; + 46 = 'Reserved for BIOS vendor'; + 47 = 'Reserved for BIOS vendor'; + 48 = 'Reserved for system vendor'; + 49 = 'Reserved for system vendor'; + 50 = 'Reserved for system vendor'; + 51 = 'Reserved for system vendor'; + 52 = 'Reserved for system vendor'; + 53 = 'Reserved for system vendor'; + 54 = 'Reserved for system vendor'; + 55 = 'Reserved for system vendor'; + 56 = 'Reserved for system vendor'; + 57 = 'Reserved for system vendor'; + 58 = 'Reserved for system vendor'; + 59 = 'Reserved for system vendor'; + 60 = 'Reserved for system vendor'; + 61 = 'Reserved for system vendor'; + 62 = 'Reserved for system vendor'; + 63 = 'Reserved for system vendor' +} + +[hashtable]$ProviderEnums = @{ + BiosCharacteristics = $BiosCharacteristics +} + +Export-ModuleMember -Variable @('ProviderEnums'); \ No newline at end of file