ps/Modules/Alkami.DevOps.Inventory/Public/Get-MemoryInventory.ps1

44 lines
1.7 KiB
PowerShell
Raw Permalink Normal View History

2023-05-30 22:51:22 -07:00
function Get-MemoryInventory {
<#
.SYNOPSIS
Returns an OrderedDictionary that Represents the Memory Inventory.
#>
[CmdletBinding()]
Param()
$logLead = (Get-LogLeadName);
$providerStopWatch = [System.Diagnostics.StopWatch]::StartNew()
$memoryDictionary = New-Object System.Collections.Specialized.OrderedDictionary
$memoryDetails = New-Object System.Collections.Specialized.OrderedDictionary
Set-Variable megaByteDivisor -Option Constant -Value 1048576
try {
Write-Verbose "$logLead : [$($providerStopWatch.Elapsed)] : Getting Memory Details"
$memory = Get-CIMInstance -Namespace "root\CIMV2" -Class Win32_PerfRawData_PerfOS_Memory `
-Property CommitLimit, AvailableMBytes, CommittedBytes, CacheBytes, PoolNonpagedBytes, PoolPagedBytes
Write-Verbose "$logLead : [$($providerStopWatch.Elapsed)] : Memory Details Retrieved"
$memoryDetails["TotalMBytes"] = ($memory.CommitLimit / $megaByteDivisor)
$memoryDetails["AvailableMBytes"] = $memory.AvailableMBytes
$memoryDetails["CommittedMBytes"] = [int]($memory.CommittedBytes / $megaByteDivisor)
$memoryDetails["SystemCacheMBytes"] = [int]($memory.CacheBytes / $megaByteDivisor)
$memoryDetails["NonPagedPoolMBytes"] = [int]($memory.PoolNonpagedBytes / $megaByteDivisor)
$memoryDetails["PagedPoolMBytes"] = [int]($memory.PoolPagedBytes / $megaByteDivisor)
$memoryDictionary.Add("Memory" , $memoryDetails)
}
catch {
$memoryDetails["Error"] = $_.Exception.ToString()
}
Write-Verbose "$logLead : [$($providerStopWatch.Elapsed)] : Provider Complete"
$providerStopWatch.Stop()
return $memoryDictionary
}