diff --git a/lib/provider/bios.psm1 b/lib/provider/bios.psm1 index ba9655f..e2acd7f 100644 --- a/lib/provider/bios.psm1 +++ b/lib/provider/bios.psm1 @@ -1,8 +1,10 @@ Import-Module $IncludeDir\provider\enums; +<################################################################################################## +################# Runspace "Show-Icinga{BIOS}" #################################################### +##################################################################################################> function Show-IcingaBiosData() { - # Lets load some bios informations $BIOSInformation = Get-CimInstance Win32_BIOS; [hashtable]$BIOSData = @{}; @@ -15,6 +17,40 @@ function Show-IcingaBiosData() return $BIOSData; } +<################################################################################################## +################# Runspace "Get-Icinga{BIOS}" ##################################################### +##################################################################################################> +function Get-IcingaBios() +{ + <# Collects the most important BIOS informations, + e.g. name, version, manufacturer#> + $BIOSInformation = Get-CimInstance Win32_BIOS; + [hashtable]$BIOSCharacteristics = @{}; + [hashtable]$BIOSData = @{}; + + foreach ($id in $BIOSInformation.BiosCharacteristics) { + $BIOSCharacteristics.Add([string]$id, $ProviderEnums.BiosCharacteristics.Item([int]$id)); + } + + $BIOSData.Add( + 'bios', @{ + 'metadata' = @{ + 'Name' = $BIOSInformation.Name; + 'Caption' = $BIOSInformation.Caption; + 'Manufacturer' = $BIOSInformation.Manufacturer; + 'PrimaryBIOS' = $BIOSInformation.PrimaryBIOS; + 'SerialNumber' = $BIOSInformation.SerialNumber; + 'SMBIOSBIOSVersion' = $BIOSInformation.SMBIOSBIOSVersion; + 'SoftwareElementID' = $BIOSInformation.SoftwareElementID; + 'Status' = $BIOSInformation.Status; + 'Version' = $BIOSInformation.Version; + 'BiosCharacteristics' = $BIOSCharacteristics; + } + } + ); + return $BIOSData; + } + function Get-IcingaBiosSerialNumber() { $bios = Get-CimInstance Win32_BIOS; @@ -33,7 +69,7 @@ function Get-IcingaBiosManufacturer() return @{'value' = $bios.Manufacturer; 'name' = 'Manufacturer'}; } -# Primary Bios seems to be relevant in dual-bios context +# Primary Bios might be more relevant in dual bios context function Get-IcingaBiosPrimaryBios() { $bios = Get-CimInstance Win32_BIOS; @@ -78,7 +114,7 @@ function Get-IcingaBiosCharacteristics() [hashtable]$BIOSCharacteristics = @{}; foreach ($id in $bios.BiosCharacteristics) { - $BIOSCharacteristics.Add([int]$id, $ProviderEnums.BiosCharacteristics.([int]$id)); + $BIOSCharacteristics.Add([string]$id, $ProviderEnums.BiosCharacteristics.Item([int]$id)); } $output = $BIOSCharacteristics; diff --git a/lib/provider/cpu.psm1 b/lib/provider/cpu.psm1 index b34767d..bdef95a 100644 --- a/lib/provider/cpu.psm1 +++ b/lib/provider/cpu.psm1 @@ -1,3 +1,8 @@ +Import-Module $IncludeDir\provider\enums; + +<################################################################################################## +################# Runspace "Show-Icinga{CPU}" ##################################################### +##################################################################################################> function Show-IcingaCPUData() { @@ -15,12 +20,19 @@ foreach ($cpu_properties in $CPUInformation) { return $PhysicalCPUData; } +<################################################################################################## +################# Runspace "Get-Icinga{Memory}" ################################################### +##################################################################################################> function Get-IcingaCPUs() { + <# Collects the most important CPU informations, + e.g. name, version, manufacturer#> $CPUInformation = Get-CimInstance Win32_Processor; [hashtable]$CPUData = @{}; foreach ($id in $CPUInformation.DeviceID) { + $id=$id.trim('CPU'); + $CPUData.Add( $id, @{ 'metadata' = @{ @@ -34,100 +46,241 @@ function Get-IcingaCPUs() 'Version' = $CPUInformation.Version; 'SerialNumber' = $CPUInformation.SerialNumber; 'Manufacturer' = $CPUInformation.Manufacturer; - 'Number of Cores' = $CPUInformation.NumberOfCores; - 'Family' = $CPUFamily.Family; - 'Architecture' = $CPUArchitecture.Architecture; - 'ProcessorType' = $CPUProcessorType.ProcessorType; - 'StatusInfo' = $CPUStatusInfo.StatusInfo; + 'NumberOfCores' = $CPUInformation.NumberOfCores; + 'PartNumber' = $CPUInformation.PartNumber; 'Status' = $CPUInformation.Status; 'CPUStatus' = $CPUInformation.CpuStatus; - 'NumberOfLogicalProcessors' = $CPUStatusInfo.NumberOfLogicalProcessors; + 'Revision' = $CPUInformation.Revision; + 'NumberOfLogicalProcessors' = $CPUInformation.NumberOfLogicalProcessors; 'Level'= $CPUInformation.Level; - 'Availability' = $CPUAvailability.Availability; - + 'AddressWidth' = $CPUInformation.AddressWidth; + 'Stepping' = $CPUInformation.Stepping; + 'SocketDesignation' = $CPUInformation.SocketDesignation; + 'Family' = @{ + 'raw' = $CPUInformation.Family; + 'value' = $ProviderEnums.CPUFamily[[int]$CPUInformation.Family]; + }; + 'Architecture' = @{ + 'raw' = $CPUInformation.Architecture; + 'value' = $ProviderEnums.CPUArchitecture[[int]$CPUInformation.Architecture]; + }; + 'ProcessorType' = @{ + 'raw' = $CPUInformation.ProcessorType; + 'value' = $ProviderEnums.CPUProcessorType[[int]$CPUInformation.ProcessorType]; + }; + 'StatusInfo' = @{ + 'raw' = $CPUInformation.StatusInfo; + 'value' = $ProviderEnums.CPUStatusInfo[[int]$CPUInformation.StatusInfo]; + }; + 'Availability' = @{ + 'raw' = $CPUInformation.Availability; + 'value' = $ProviderEnums.CPUAvailability[[int]$CPUInformation.Availability]; + }; + 'PowerManagementCapabilities' = @{ + 'raw' = $CPUInformation.PowerManagementCapabilities; + 'value' = $ProviderEnums.CPUPowerManagementCapabilities[[int]$CPUInformation.PowerManagementCapabilities]; + } }; 'errors' = @{ 'LastErrorCode' = $CPUInformation.LastErrorCode; 'ErrorCleared' = $CPUInformation.ErrorCleared; 'ErrorDescription' = $CPUInformation.ErrorDescription; - 'ConfigManagerErrorCode' = $CPUConfigManagerErrorCode.ConfigManagerErrorCode; + 'ConfigManagerErrorCode' = @{ + 'raw' = [int]$CPUInformation.ConfigManagerErrorCode; + 'value' = $ProviderEnums.CPUConfigManagerErrorCode.([int]$CPUInformation.ConfigManagerErrorCode); + } }; - 'perfdata' = @{ + 'specs' = @{ 'LoadPercentage' = $CPUInformation.LoadPercentage; 'CurrentVoltage' = $CPUInformation.CurrentVoltage; 'ThreadCount' = $CPUInformation.ThreadCount; + 'L3CacheSize' = $CPUInformation.L3CacheSize; + 'L2CacheSpeed' = $CPUInformation.L2CacheSpeed; + 'L2CacheSize' = $CPUInformation.L2CacheSize; + 'VoltageCaps' = $CPUInformation.VoltageCaps; + 'CurrentClockSpeed' = $CPUInformation.CurrentClockSpeed; } } - ); + ); } return $CPUData; } +function Get-IcingaCPUInformation() +{ + <# Fetches the information for other more specific Get-IcingaCPU-functions + e.g. Get-IcingaCPUThreadCount; Get-IcingaCPULoadPercentage. + Can be used to fetch information regarding a value of your choice. #> + param( + [string]$Parameter + ); + $CPUInformation = Get-CimInstance Win32_Processor; + [hashtable]$CPUData = @{}; + + foreach ($id in $CPUInformation.DeviceID) { + $CPUData.Add($id.trim('CPU'), $CPUInformation.$Parameter); + } + + return $CPUData; +} + +function Get-IcingaCPUInformationWithEnums() +{ <# Fetches the information of other more specific Get-IcingaCPU-functions, + which require a enums key-value pair to resolve their code + e.g Get-IcingaCPUFamily, e.g. Get-IcingaCPUArchitecture#> + param( + [string]$Parameter + ); + + $CPUInformation = Get-CimInstance Win32_Processor; + $Prefix = "CPU"; + + [hashtable]$CPUData = @{}; + + foreach ($id in $CPUInformation.DeviceID) { + $id=$id.trim('CPU'); + $CPUData.Add( + $id, @{ + 'raw' = $CPUInformation.$Parameter; + 'value' = $ProviderEnums."$Prefix$Parameter"[[int]$CPUInformation.$Parameter] + } + ); + } + return $CPUData; +} + +function Get-IcingaCPUErrors() +{ + $CPUInformation = Get-CimInstance Win32_Processor; + [hashtable]$CPUData = @{}; + + foreach ($id in $CPUInformation.DeviceID) { + $id=$id.trim('CPU'); + $CPUData.Add( + $id, @{ + 'errors' = @{ + 'LastErrorCode' = $CPUInformation.LastErrorCode; + 'ErrorCleared' = $CPUInformation.ErrorCleared; + 'ErrorDescription' = $CPUInformation.ErrorDescription; + 'ConfigManagerErrorCode' = @{ + 'raw' = [int]$CPUInformation.ConfigManagerErrorCode; + 'value' = $ProviderEnums.CPUConfigManagerErrorCode.([int]$CPUInformation.ConfigManagerErrorCode); + } + } + } + ); + } + return $CPUData; +} function Get-IcingaCPUArchitecture() { + $CPUArchitecture = Get-IcingaCPUInformationWithEnums -Parameter Architecture; - $CPUInformation = Get-CimInstance Win32_Processor; - [hashtable]$CPUArchitecture = @{}; - - foreach ($id in $CPUInformation.Architecture) { - $CPUArchitecture.Add([int]$id, $ProviderEnums.CPUArchitecture.([int]$id)); - } - return @{'value' = $CPUArchitecture; 'name' = 'Architecture'}; + return @{'value' = $CPUArchitecture; 'name' = 'Architecture'}; } function Get-IcingaCPUProcessorType() { - $CPUInformation = Get-CimInstance Win32_Processor; - [hashtable]$CPUProcessorType = @{}; + $CPUProcessorType = Get-IcingaCPUInformationWithEnums -Parameter ProcessorType; - foreach ($id in $CPUInformation.ProcessorType) { - $CPUProcessorType.Add([int]$id, $ProviderEnums.CPUProcessorType.([int]$id)); - } - return @{'value' = $CPUProcessorType; 'name' = 'ProcessorType'}; + return @{'value' = $CPUProcessorType; 'name' = 'ProcessorType'}; } function Get-IcingaCPUStatusInfo() { - $CPUInformation = Get-CimInstance Win32_Processor; - [hashtable]$CPUStatusInfo = @{}; + $CPUStatusInfo = Get-IcingaCPUInformationWithEnums -Parameter StatusInfo; - foreach ($id in $CPUInformation.StatusInfo) { - $CPUStatusInfo.Add([int]$id, $ProviderEnums.CPUStatusInfo.([int]$id)); - } - return @{'value' = $CPUStatusInfo; 'name' = 'StatusInfo'}; + return @{'value' = $CPUStatusInfo; 'name' = 'StatusInfo'}; } function Get-IcingaCPUFamily() { - $CPUInformation = Get-CimInstance Win32_Processor; - [hashtable]$CPUFamily = @{}; + $CPUFamily = Get-IcingaCPUInformationWithEnums -Parameter Family; - foreach ($id in $CPUInformation.Family) { - $CPUFamily.Add([int]$id, $ProviderEnums.CPUFamily.([int]$id)); - } - return @{'value' = $CPUFamily; 'name' = 'Family'}; + return @{'value' = $CPUFamily; 'name' = 'Family'}; } function Get-IcingaCPUConfigManagerErrorCode() { - $CPUInformation = Get-CimInstance Win32_Processor; - [hashtable]$CPUConfigManagerErrorCode = @{}; + $CPUConfigManagerErrorCode = Get-IcingaCPUInformationWithEnums -Parameter ConfigManagerErrorCode; - foreach ($id in $CPUInformation.ConfigManagerErrorCode) { - $CPUConfigManagerErrorCode.Add([int]$id, $ProviderEnums.CPUConfigManagerErrorCode.([int]$id)); - } - return @{'value' = $CPUConfigManagerErrorCode; 'name' = 'ConfigManagerErrorCode'}; + return @{'value' = $CPUConfigManagerErrorCode; 'name' = 'ConfigManagerErrorCode'}; } function Get-IcingaCPUAvailability() { - $CPUInformation = Get-CimInstance Win32_Processor; - [hashtable]$CPUAvailability = @{}; - - foreach ($id in $CPUInformation.Availability) { - $CPUAvailability.Add([int]$id, $ProviderEnums.CPUAvailability.([int]$id)); - } + $CPUAvailability = Get-IcingaCPUInformationWithEnums -Parameter Availability; - return @{'value' = $CPUAvailability; 'name' = 'Availability'}; + return @{'value' = $CPUAvailability; 'name' = 'Availability'}; +} + +function Get-IcingaCPUPowerManagementCapabilities() +{ + $CPUPowerManagementCapabilities = Get-IcingaCPUInformationWithEnums -Parameter PowerManagementCapabilities; + + return @{'value' = $CPUPowerManagementCapabilities; 'name' = 'PowerManagementCapabilities'}; +} + +function Get-IcingaCPULoadPercentage() +{ + $CPULoadPercentage = Get-IcingaCPUInformation -Parameter LoadPercentage; + + return @{'value' = $CPULoadPercentage; 'name' = 'LoadPercentage'}; +} + +function Get-IcingaCPUCurrentVoltage() +{ + $CPUCurrentVoltage = Get-IcingaCPUInformation -Parameter CurrentVoltage; + + return @{'value' = $CPUCurrentVoltage; 'name' = 'CurrentVoltage'}; +} + +function Get-IcingaCPUThreadCount() +{ + $CPUThreadCount = Get-IcingaCPUInformation -Parameter ThreadCount; + + return @{'value' = $CPUThreadCount; 'name' = 'ThreadCount'}; +} + +function Get-IcingaCPUL3CacheSize() +{ + $CPUL3CacheSize = Get-IcingaCPUInformation -Parameter L3CacheSize; + + return @{'value' = $CPUL3CacheSize; 'name' = 'L3CacheSize'}; +} + +function Get-IcingaCPUL2CacheSize() +{ + $CPUL2CacheSize = Get-IcingaCPUInformation -Parameter L2CacheSize; + + return @{'value' = $CPUL2CacheSize; 'name' = 'L2CacheSize'}; +} + +function Get-IcingaCPUL2CacheSpeed() +{ + $CPUL2CacheSpeed = Get-IcingaCPUInformation -Parameter L2CacheSpeed; + + return @{'value' = $CPUL2CacheSpeed; 'name' = 'L2CacheSpeed'}; +} + +function Get-IcingaCPUVoltageCaps() +{ + $CPUVoltageCaps = Get-IcingaCPUInformation -Parameter VoltageCaps; + + return @{'value' = $CPUVoltageCaps; 'name' = 'VoltageCaps'}; +} + +function Get-IcingaCPUCurrentClockSpeed() +{ + $CPUCurrentClockSpeed = Get-IcingaCPUInformation -Parameter CurrentClockSpeed; + + return @{'value' = $CPUCurrentClockSpeed; 'name' = 'CurrentClockSpeed'}; +} + +function Get-IcingaCPUNumberOfLogicalProcessors() +{ + $CPUNumberOfLogicalProcessors = Get-IcingaCPUInformation -Parameter NumberOfLogicalProcessors; + + return @{'value' = $CPUNumberOfLogicalProcessors; 'name' = 'NumberOfLogicalProcessors'}; } \ No newline at end of file diff --git a/lib/provider/disks.psm1 b/lib/provider/disks.psm1 index f8af26c..d689a33 100644 --- a/lib/provider/disks.psm1 +++ b/lib/provider/disks.psm1 @@ -1,4 +1,10 @@ -function Show-IcingaDiskFullData { +Import-Module $IncludeDir\provider\enums; + +<################################################################################################## +################# Runspace "Show-Icinga{Disk}" #################################################### +##################################################################################################> + +function Show-IcingaDiskData { $DisksInformations = Get-CimInstance Win32_DiskDrive; @@ -84,8 +90,15 @@ function Show-IcingaDiskPhysical() return $PhysicalDiskData; } +<################################################################################################## +################# Runspace "Get-Icinga{Disk}" #################################################### +##################################################################################################> + function Get-IcingaDiskInformation() { + <# Fetches the information for other more specific Get-IcingaDisk-functions + e.g. Get-IcingaDiskModel; Get-IcingaDiskManufacturer. + Can be used to fetch information regarding a value of your choice. #> param( # The value to fetch from Win32_DiskDrive [string]$Parameter @@ -93,7 +106,7 @@ function Get-IcingaDiskInformation() $DiskInformation = Get-CimInstance Win32_DiskDrive; [hashtable]$DiskData = @{}; - foreach ($id in $DiskInformation.DeviceID) { + foreach ($id in $DiskInformation.DeviceID) { $id = $id.trimstart(".\PHYSICALDRVE"); $DiskData.Add($id.trim(), $DiskInformation.$Parameter); } @@ -102,6 +115,9 @@ function Get-IcingaDiskInformation() } function Get-IcingaDiskPartitions() { + <# Fetches all the most important informations regarding partitions + e.g. physical disk; partition, size + , also collects partition information for Get-IcingaDisks #> $LogicalDiskInfo = Get-WmiObject Win32_LogicalDiskToPartition; [hashtable]$PartitionDiskByDriveLetter = @{}; @@ -141,7 +157,7 @@ function Get-IcingaDiskPartitionSize() [hashtable]$PartitionSizeByDriveLetter = @{}; - # Should be dependent on the driveLetters returned in: "Show-IcingaDiskFullData" + # Should be dependent on the driveLetters returned in: "Show-IcingaDiskData" for ($test = 0; $test -lt 26; $test++) { $DiskDriveLetter = ([char](65 + $test)) @@ -211,12 +227,14 @@ function Get-IcingaDiskTotalSectors } function Get-IcingaDisks { - + <# Collects all the most important Disk-Informations, + e.g. size, model, sectors, cylinders + Is dependent on Get-IcingaDiskPartitions#> $DiskInformation = Get-CimInstance Win32_DiskDrive; $diskPartitionInformation = Get-IcingaDiskPartitions; [hashtable]$DiskData = @{}; - foreach ($id in $DiskInformation.DeviceID) { + foreach ($id in $DiskInformation.DeviceID) { [int]$id = $id.trimstart(".\PHYSICALDRVE"); $DiskData.Add( diff --git a/lib/provider/enums.psm1 b/lib/provider/enums.psm1 index 938e236..6903ec0 100644 --- a/lib/provider/enums.psm1 +++ b/lib/provider/enums.psm1 @@ -1,8 +1,13 @@ -[hashtable]$BiosCharacteristics = @{ + +<################################################################################################## +################# /lib/provider/bios.psm1 ######################################################### +##################################################################################################> + +[hashtable]$BiosCharacteristics = @{ 0 = 'Reserved'; 1 = 'Reserved'; 2 = 'Unknown'; - 3 = 'BIOS Characteristics Not Supported'; + 3 = 'BIOS Characteristics Not Supported'; 4 = 'ISA is supported'; 5 = 'MCA is supported'; 6 = 'EISA is supported'; @@ -65,7 +70,11 @@ 63 = 'Reserved for system vendor' } -[hashtable]$DiskCapabilities = @{ +<################################################################################################## +################# /lib/provider/disks.psm1 ######################################################## +##################################################################################################> + +[hashtable]$DiskCapabilities = @{ 0 = 'Unknown'; 1 = 'Other'; 2 = 'Sequential Access'; @@ -78,9 +87,13 @@ 9 = 'Automatic Cleaning'; 10 = 'SMART Notification'; 11 = 'Supports Dual Sided Media'; - 12 = 'Predismount Eject Not Required' + 12 = 'Predismount Eject Not Required'; } +<################################################################################################## +################# /lib/provider/cpu.psm1 ########################################################## +##################################################################################################> + [hashtable]$CPUArchitecture = @{ 0='x86'; 1='MIPS'; @@ -100,122 +113,122 @@ } [hashtable]$CPUStatusInfo = @{ - 1='Other' - 2='Unknown' - 3='Enabled' - 4='Disabled' - 5='Not Applicable' + 1='Other'; + 2='Unknown'; + 3='Enabled'; + 4='Disabled'; + 5='Not Applicable'; } [hashtable]$CPUFamily = @{ - 1='Other' - 2='Unknown' - 3='8086' - 4='80286' - 5='80386' - 6='80486' - 7='8087' - 8='80287' - 9='80387' - 10='80487' - 11='Pentium(R) brand' - 12='Pentium(R) Pro' - 13='Pentium(R) II' - 14='Pentium(R) processor with MMX(TM) technology' - 15='Celeron(TM)' - 16='Pentium(R) II Xeon(TM)' - 17='Pentium(R) III' - 18='M1 Family' - 19='M2 Family' - 24='K5 Family' - 25='K6 Family' - 26='K6-2' - 27='K6-3' - 28='AMD Athlon(TM) Processor Family' - 29='AMD(R) Duron(TM) Processor' - 30='AMD29000 Family' - 31='K6-2+' - 32='Power PC Family' - 33='Power PC 601' - 34='Power PC 603' - 35='Power PC 603+' - 36='Power PC 604' - 37='Power PC 620' - 38='Power PC X704' - 39='Power PC 750' - 48='Alpha Family' - 49='Alpha 21064' - 50='Alpha 21066' - 51='Alpha 21164' - 52='Alpha 21164PC' - 53='Alpha 21164a' - 54='Alpha 21264' - 55='Alpha 21364' - 64='MIPS Family' - 65='MIPS R4000' - 66='MIPS R4200' - 67='MIPS R4400' - 68='MIPS R4600' - 69='MIPS R10000' - 80='SPARC Family' - 81='SuperSPARC' - 82='microSPARC II' - 83='microSPARC IIep' - 84='UltraSPARC' - 85='UltraSPARC II' - 86='UltraSPARC IIi' - 87='UltraSPARC III' - 88='UltraSPARC IIIi' - 96='68040' - 97='68xxx Family' - 98='68000' - 99='68010' - 100='68020' - 101='68030' - 112='Hobbit Family' - 120='Crusoe(TM) TM5000 Family' - 121='Crusoe(TM) TM3000 Family' - 122='Efficeon(TM) TM8000 Family' - 128='Weitek' - 130='Itanium(TM) Processor' - 131='AMD Athlon(TM) 64 Processor Family' - 132='AMD Opteron(TM) Family' - 144='PA-RISC Family' - 145='PA-RISC 8500' - 146='PA-RISC 8000' - 147='PA-RISC 7300LC' - 148='PA-RISC 7200' - 149='PA-RISC 7100LC' - 150='PA-RISC 7100' - 160='V30 Family' - 176='Pentium(R) III Xeon(TM)' - 177='Pentium(R) III Processor with Intel(R) SpeedStep(TM) Technology' - 178='Pentium(R) 4' - 179='Intel(R) Xeon(TM)' - 180='AS400 Family' - 181='Intel(R) Xeon(TM) processor MP' - 182='AMD AthlonXP(TM) Family' - 183='AMD AthlonMP(TM) Family' - 184='Intel(R) Itanium(R) 2' - 185='Intel Pentium M Processor' - 190='K7' - 200='IBM390 Family' - 201='G4' - 202='G5' - 203='G6' - 204='z/Architecture base' - 250='i860' - 251='i960' - 260='SH-3' - 261='SH-4' - 280='ARM' - 281='StrongARM' - 300='6x86' - 301='MediaGX' - 302='MII' - 320='WinChip' - 350='DSP' - 500='Video Processor' + 1='Other'; + 2='Unknown'; + 3='8086'; + 4='80286'; + 5='80386'; + 6='80486'; + 7='8087'; + 8='80287'; + 9='80387'; + 10='80487'; + 11='Pentium(R) brand'; + 12='Pentium(R) Pro'; + 13='Pentium(R) II'; + 14='Pentium(R) processor with MMX(TM) technology'; + 15='Celeron(TM)'; + 16='Pentium(R) II Xeon(TM)'; + 17='Pentium(R) III'; + 18='M1 Family'; + 19='M2 Family'; + 24='K5 Family'; + 25='K6 Family'; + 26='K6-2'; + 27='K6-3'; + 28='AMD Athlon(TM) Processor Family'; + 29='AMD(R) Duron(TM) Processor'; + 30='AMD29000 Family'; + 31='K6-2+'; + 32='Power PC Family'; + 33='Power PC 601'; + 34='Power PC 603'; + 35='Power PC 603+'; + 36='Power PC 604'; + 37='Power PC 620'; + 38='Power PC X704'; + 39='Power PC 750'; + 48='Alpha Family'; + 49='Alpha 21064'; + 50='Alpha 21066'; + 51='Alpha 21164'; + 52='Alpha 21164PC'; + 53='Alpha 21164a'; + 54='Alpha 21264'; + 55='Alpha 21364'; + 64='MIPS Family'; + 65='MIPS R4000'; + 66='MIPS R4200'; + 67='MIPS R4400'; + 68='MIPS R4600'; + 69='MIPS R10000'; + 80='SPARC Family'; + 81='SuperSPARC'; + 82='microSPARC II'; + 83='microSPARC IIep'; + 84='UltraSPARC'; + 85='UltraSPARC II'; + 86='UltraSPARC IIi'; + 87='UltraSPARC III'; + 88='UltraSPARC IIIi'; + 96='68040'; + 97='68xxx Family'; + 98='68000'; + 99='68010'; + 100='68020'; + 101='68030'; + 112='Hobbit Family'; + 120='Crusoe(TM) TM5000 Family'; + 121='Crusoe(TM) TM3000 Family'; + 122='Efficeon(TM) TM8000 Family'; + 128='Weitek'; + 130='Itanium(TM) Processor'; + 131='AMD Athlon(TM) 64 Processor Family'; + 132='AMD Opteron(TM) Family'; + 144='PA-RISC Family'; + 145='PA-RISC 8500'; + 146='PA-RISC 8000'; + 147='PA-RISC 7300LC'; + 148='PA-RISC 7200'; + 149='PA-RISC 7100LC'; + 150='PA-RISC 7100'; + 160='V30 Family'; + 176='Pentium(R) III Xeon(TM)'; + 177='Pentium(R) III Processor with Intel(R) SpeedStep(TM) Technology'; + 178='Pentium(R) 4'; + 179='Intel(R) Xeon(TM)'; + 180='AS400 Family'; + 181='Intel(R) Xeon(TM) processor MP'; + 182='AMD AthlonXP(TM) Family'; + 183='AMD AthlonMP(TM) Family'; + 184='Intel(R) Itanium(R) 2'; + 185='Intel Pentium M Processor'; + 190='K7'; + 200='IBM390 Family'; + 201='G4'; + 202='G5'; + 203='G6'; + 204='z/Architecture base'; + 250='i860'; + 251='i960'; + 260='SH-3'; + 261='SH-4'; + 280='ARM'; + 281='StrongARM'; + 300='6x86'; + 301='MediaGX'; + 302='MII'; + 320='WinChip'; + 350='DSP'; + 500='Video Processor'; } [hashtable]$CPUConfigManagerErrorCode = @{ @@ -277,15 +290,109 @@ 21='Quiesced'; } -[hashtable]$ProviderEnums = @{ +[hashtable]$CPUPowerManagementCapabilities = @{ + 0='Unknown'; + 1='Not Supported'; + 2='Disabled'; + 3='Enabled'; +} + +[hashtable]$MemoryFormFactor = @{ + 0='Unknown'; + 1= 'Other'; + 2= 'SIP'; + 3= 'DIP'; + 4= 'ZIP'; + 5= 'SOJ'; + 6= 'Proprietary'; + 7= 'SIMM'; + 8= 'DIMM'; + 9= 'TSOP'; + 10= 'PGA'; + 11= 'RIMM'; + 12= 'SODIMM'; + 13= 'SRIMM'; + 14= 'SMD'; + 15= 'SSMP'; + 16= 'QFP'; + 17= 'TQFP'; + 18= 'SOIC'; + 19= 'LCC'; + 20= 'PLCC'; + 21= 'BGA'; + 22= 'FPBGA'; + 23= 'LGA'; +} + +[hashtable]$MemoryInterleavePosition = @{ + 0= 'Noninterleaved'; + 1= 'First position'; + 2= 'Second position'; +} + +[hashtable]$MemoryMemoryType = @{ + 0= 'Unknown'; + 1= 'Other'; + 2= 'DRAM'; + 3= 'Synchronous DRAM'; + 4= 'Cache DRAM'; + 5= 'EDO'; + 6= 'EDRAM'; + 7= 'VRAM'; + 8= 'SRAM'; + 9= 'RAM'; + 10= 'ROM'; + 11= 'Flash'; + 12='EEPROM'; + 13= 'FEPROM'; + 14= 'EPROM'; + 15= 'CDRAM'; + 16= '3DRAM'; + 17= 'SDRAM'; + 18= 'SGRAM'; + 19= 'RDRAM'; + 20= 'DDR'; + 21= 'DDR2'; + 22= 'DDR2 FB-DIMM'; + 23= 'DDR2—FB-DIMM,May not be available; see note above.'; + 24= 'DDR3—May not be available; see note above.'; + 25= 'FBD2'; +} + +[hashtable]$MemoryTypeDetail = @{ + 1= 'Reserved'; + 2= 'Other'; + 4= 'Unknown'; + 8= 'Fast-paged'; + 16= 'Static column'; + 32= 'Pseudo-static'; + 64= 'RAMBUS'; + 128= 'Synchronous'; + 256= 'CMOS'; + 512= 'EDO'; + 1024= 'Window DRAM'; + 2048= 'Cache DRAM'; + 4096= 'Non-volatile'; +} + +[hashtable]$ProviderEnums = @{ + #/lib/provider/bios.psm1 BiosCharacteristics = $BiosCharacteristics; + #/lib/provider/disks.psm1 DiskCapabilities = $DiskCapabilities; + #/lib/provider/cpu.psm1 CPUArchitecture = $CPUArchitecture; CPUProcessorType = $CPUProcessorType; CPUStatusInfo = $CPUStatusInfo; CPUFamily = $CPUFamily; CPUConfigManagerErrorCode = $CPUConfigManagerErrorCode; CPUAvailability = $CPUAvailability; + CPUPowerManagementCapabilities = $CPUPowerManagementCapabilities; + #/lib/provider/memory.psm1 + MemoryFormFactor = $MemoryFormFactor; + MemoryInterleavePosition = $MemoryInterleavePosition; + MemoryMemoryType = $MemoryMemoryType; + MemoryTypeDetail = $MemoryTypeDetail; } Export-ModuleMember -Variable @('ProviderEnums'); \ No newline at end of file diff --git a/lib/provider/memory.psm1 b/lib/provider/memory.psm1 new file mode 100644 index 0000000..da6edd0 --- /dev/null +++ b/lib/provider/memory.psm1 @@ -0,0 +1,196 @@ +Import-Module $IncludeDir\provider\enums; + +<################################################################################################## +################# Runspace "Show-Icinga{Memory}" ################################################## +##################################################################################################> +function Show-IcingaMemoryData () +{ + + $MEMInformation = Get-CimInstance Win32_PhysicalMemory; + + [hashtable]$MEMData = @{}; + + foreach($id in $MEMInformation) { + $MEMData.Add( + $id.tag.trim("Physical Memory"), @{ + 'Caption' = $id.Name; + 'Description' = $id.Description; + 'Name' = $id.Name; + 'InstallDate' = $id.InstallDate; + 'Status' = $id.Status + 'CreationClassName'= $id.CreationClassName + 'Manufacturer'= $id.Manufacturer + 'Model'= $id.Model + 'OtherIdentifyingInfo'= $id.OtherIdentifyingInfo + 'PartNumber'= $id.PartNumber + 'PoweredOn'= $id.PoweredOn + 'SerialNumber'= $id.SerialNumber + 'SKU'= $id.SKU + 'Tag'= $id.Tag + 'Version'= $id.Version + 'HotSwappable'= $id.HotSwappable + 'Removable'= $id.Removable + 'Replaceable'= $id.Replaceable + 'FormFactor'= $id.FormFactor + 'BankLabel'= $id.BankLabel + 'Capacity'= $id.Capacity + 'DataWidth'= $id.DataWidth + 'InterleavePosition'= $id.InterleavePosition + 'MemoryType'= $id.MemoryType + 'PositionInRow'= $id.PositionInRow + 'Speed'= $id.Speed + 'TotalWidth'= $id.TotalWidth + 'Attributes'= $id.Attributes + 'ConfiguredClockSpeed'= $id.ConfiguredClockSpeed + 'ConfiguredVoltage'= $id.ConfiguredVoltage + 'DeviceLocator'= $id.DeviceLocator + 'InterleaveDataDepth'= $id.InterleaveDataDepth + 'MaxVoltage'= $id.MaxVoltage + 'MinVoltage'= $id.MinVoltage + 'SMBIOSMemoryType'= $id.SMBIOSMemoryType + 'TypeDetail'= $id.TypeDetail + 'PSComputerName'= $id.PSComputerName + } + ); + } + return $MEMData; +} +<################################################################################################## +################# Runspace "Get-Icinga{Memory}" ################################################### +##################################################################################################> +function Get-IcingaMemory () +{ + <# Collects the most important Memory informations, + e.g. name, version, manufacturer#> + $MEMInformation = Get-CimInstance Win32_PhysicalMemory; + + [hashtable]$MEMData = @{}; + + foreach($id in $MEMInformation) { + $MEMData.Add( + $id.tag.trim("Physical Memory"), @{ + 'metadata' = @{ + 'Caption' = $id.Name; + 'Description'= $id.Description; + 'Manufacturer'= $id.Manufacturer; + 'Model'= $id.Model; + 'OtherIdentifyingInfo'= $id.OtherIdentifyingInfo; + 'PartNumber'= $id.PartNumber; + 'SerialNumber'= $id.SerialNumber; + 'Tag'= $id.Tag; + 'SMBIOSMemoryType'= $id.SMBIOSMemoryType; + 'DeviceLocator' = $id.DeviceLocator; + 'PositionInRow' = $id.PositionInRow; + 'Version' = $id.Version; + 'PoweredOn' = $id.PoweredOn; + 'Status' = $id.Status; + 'InstallDate' = $id.InstallDate; + 'BankLabel' = $id.BankLabel; + 'InterleaveDataDepth' = $id.InterleaveDataDepth; + 'Attributes' = $id.Attributes; + 'Replaceable' = $id.Replaceable; + 'Removable' = $id.Removable; + 'HotSwappable' = $id.HotSwappable; + 'FormFactor' = @{ + 'raw' = $id.FormFactor; + 'value' = $ProviderEnums.MemoryFormFactor[[int]$id.FormFactor]; + }; + 'InterleavePosition' = @{ + 'raw' = $id.InterleavePosition; + 'value' = $ProviderEnums.MemoryInterleavePosition[[int]$id.InterleavePosition]; + }; + 'MemoryType' = @{ + 'raw' = $id.MemoryType; + 'value' = $ProviderEnums.MemoryMemoryType[[int]$id.MemoryType]; + }; + 'TypeDetail' = @{ + 'raw' = $id.TypeDetail; + 'value' = $ProviderEnums.MemoryTypeDetail[[int]$id.TypeDetail]; + }; + }; + 'specs' = @{ + 'MaxVoltage' = $id.MaxVoltage; + 'MinVoltage' = $id.MinVoltage; + 'ConfiguredVoltage' = $id.ConfiguredVoltage; + 'ConfiguredClockSpeed' = $id.ConfiguredClockSpeed; + 'TotalWidth' = $id.TotalWidth; + 'DataWidth' = $id.DataWidth; + 'Speed' = $id.Speed; + 'Capacity' = $id.Capacity; + } + } + ); + } + + return $MEMData; +} + +function Get-IcingaMemoryInformation() +{ + param( + [string]$Parameter + ); + $MEMInformation = Get-CimInstance Win32_PhysicalMemory; + [hashtable]$MEMData = @{}; + + foreach ($id in $MEMInformation) { + $MEMData.Add($id.tag.trim("Physical Memory"), $id.$Parameter); + } + + return $MEMData; +} +function Get-IcingaMemoryMaxVoltage() +{ + $MemoryMaxVoltage = Get-IcingaMemoryInformation -Parameter MaxVoltage; + + return @{'value' = $MemoryMaxVoltage; 'name' = 'MaxVoltage'}; +} + +function Get-IcingaMemoryMinVoltage() +{ + $MemoryMinVoltage = Get-IcingaMemoryInformation -Parameter MinVoltage; + + return @{'value' = $MemoryMinVoltage; 'name' = 'MinVoltage'}; +} + +function Get-IcingaMemoryConfiguredVoltage() +{ + $MemoryConfiguredVoltage = Get-IcingaMemoryInformation -Parameter ConfiguredVoltage; + + return @{'value' = $MemoryConfiguredVoltage; 'name' = 'ConfiguredVoltage'}; +} + +function Get-IcingaMemoryConfiguredClockSpeed() +{ + $MemoryConfiguredClockSpeed = Get-IcingaMemoryInformation -Parameter ConfiguredClockSpeed; + + return @{'value' = $MemoryConfiguredClockSpeed; 'name' = 'ConfiguredClockSpeed'}; +} + +function Get-IcingaMemoryTotalWidth() +{ + $MemoryTotalWidth = Get-IcingaMemoryInformation -Parameter TotalWidth; + + return @{'value' = $MemoryTotalWidth; 'name' = 'TotalWidth'}; +} + +function Get-IcingaMemoryDataWidth() +{ + $MemoryDataWidth = Get-IcingaMemoryInformation -Parameter DataWidth; + + return @{'value' = $MemoryDataWidth; 'name' = 'DataWidth'}; +} + +function Get-IcingaMemorySpeed() +{ + $MemorySpeed = Get-IcingaMemoryInformation -Parameter Speed; + + return @{'value' = $MemorySpeed; 'name' = 'Speed'}; +} + +function Get-IcingaMemoryCapacity() +{ + $MemoryCapacity = Get-IcingaMemoryInformation -Parameter Capacity; + + return @{'value' = $MemoryCapacity; 'name' = 'Capacity'}; +} \ No newline at end of file