44 lines
1.7 KiB
PowerShell
44 lines
1.7 KiB
PowerShell
|
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
|
||
|
}
|