provider/memory/Icinga_ProviderMemory.psm1
Import-IcingaLib provider\enums; function Get-IcingaMemory() { <# Collects the most important Memory informations, e.g. name, version, manufacturer#> $MEMInformation = Get-IcingaWindowsInformation Win32_PhysicalMemory; [hashtable]$MEMData = @{}; foreach($memory in $MEMInformation) { $TypeDetail = @(); $ProviderEnums.MemoryTypeDetail.Keys | Where-Object { $_ -band $memory.TypeDetail } | ForEach-Object { $TypeDetail += $ProviderEnums.MemoryTypeDetail.Get_Item($_); }; $MEMData.Add( $memory.tag.trim("Physical Memory"), @{ 'metadata' = @{ 'Caption' = $memory.Name; 'Description'= $memory.Description; 'Manufacturer'= $memory.Manufacturer; 'Model'= $memory.Model; 'OtherIdentifyingInfo'= $memory.OtherIdentifyingInfo; 'PartNumber'= $memory.PartNumber; 'SerialNumber'= $memory.SerialNumber; 'Tag'= $memory.Tag; 'SMBIOSMemoryType'= $memory.SMBIOSMemoryType; 'DeviceLocator' = $memory.DeviceLocator; 'PositionInRow' = $memory.PositionInRow; 'Version' = $memory.Version; 'PoweredOn' = $memory.PoweredOn; 'Status' = $memory.Status; 'InstallDate' = $memory.InstallDate; 'BankLabel' = $memory.BankLabel; 'InterleaveDataDepth' = $memory.InterleaveDataDepth; 'Attributes' = $memory.Attributes; 'Replaceable' = $memory.Replaceable; 'Removable' = $memory.Removable; 'HotSwappable' = $memory.HotSwappable; 'FormFactor' = @{ 'raw' = $memory.FormFactor; 'value' = $ProviderEnums.MemoryFormFactor[[int]$memory.FormFactor]; }; 'InterleavePosition' = @{ 'raw' = $memory.InterleavePosition; 'value' = $ProviderEnums.MemoryInterleavePosition[[int]$memory.InterleavePosition]; }; 'MemoryType' = @{ 'raw' = $memory.MemoryType; 'value' = $ProviderEnums.MemoryMemoryType[[int]$memory.MemoryType]; }; 'TypeDetail' = @{ 'raw' = $memory.TypeDetail; 'value' = $TypeDetail; }; }; 'specs' = @{ 'MaxVoltage' = $memory.MaxVoltage; 'MinVoltage' = $memory.MinVoltage; 'ConfiguredVoltage' = $memory.ConfiguredVoltage; 'ConfiguredClockSpeed' = $memory.ConfiguredClockSpeed; 'TotalWidth' = $memory.TotalWidth; 'DataWidth' = $memory.DataWidth; 'Speed' = $memory.Speed; 'Capacity' = $memory.Capacity; } } ); } return $MEMData; } function Get-IcingaMemoryInformation() { <# Fetches the information for other more specific Get-IcingaMemory-functions e.g. Get-IcingaMemoryMaxVoltage; Get-IcingaMemoryTotalWidth. Can be used to fetch information regarding a value of your choice. #> param( [string]$Parameter ); $MEMInformation = Get-IcingaWindowsInformation Win32_PhysicalMemory; [hashtable]$MEMData = @{}; foreach ($memory in $MEMInformation) { $MEMData.Add($memory.tag.trim("Physical Memory"), $memory.$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'}; } |