Get-WindowsMemory.ps1
<#PSScriptInfo .VERSION 1.3.5 .GUID aea43ca3-73aa-4262-9f20-5e73c134af11 .AUTHOR saw-friendship .COMPANYNAME .COPYRIGHT saw-friendship .TAGS saw-friendship Windows WMI Remote Memory Sytem .LICENSEURI .PROJECTURI .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES #> <# .DESCRIPTION Get Windows Memory by Wmi on local and remote system .LINK https://sawfriendship.wordpress.com/ .EXAMPLE Get-WindowsMemory .EXAMPLE Get-WindowsMemory FileServer01 -Credential (Get-Credential) .EXAMPLE Get-WindowsMemory FileServer01,FileServer02 .EXAMPLE Get-ClusterNode | Get-WindowsMemory | ft #> [CmdletBinding()] param( [Parameter(ValueFromPipelineByPropertyName=$true)][alias("DNSHostName","Name")]$ComputerName = '.', [PSCredential]$Credential ) BEGIN {} PROCESS { Foreach ($Comp in $ComputerName) { $param = @{ 'ComputerName' = $Comp 'ErrorVariable' = 'WmiRequestError' } if($Credential -and ($Comp -notin @($env:COMPUTERNAME,'.'))){$param.Credential = $Credential} try{ $PerfOS_Memory = Get-WmiObject -Class Win32_PerfRawData_PerfOS_Memory @param $PhysicalMemory = Get-WmiObject -Class Win32_PhysicalMemory @param $TotalPhysicalMemory = ($PhysicalMemory | Measure-Object -Sum -Property Capacity).Sum } Catch {$WmiRequestError; break} if($PerfOS_Memory -and !$WmiRequestError){ [pscustomobject][ordered]@{ 'ComputerName' = $PerfOS_Memory.PSComputerName 'AvailableGB' = [System.Math]::Round(($PerfOS_Memory.AvailableBytes/1gb),2) 'inUseGB' = [System.Math]::Round(($TotalPhysicalMemory/1gb - $PerfOS_Memory.AvailableBytes/1gb),2) 'CacheGB' = [System.Math]::Round(($PerfOS_Memory.CacheBytes/1gb),2) 'CommittedGB' = [System.Math]::Round(($PerfOS_Memory.CommittedBytes/1gb),2) 'CommitLimitGB' = [System.Math]::Round(($PerfOS_Memory.CommitLimit/1gb),2) 'PoolPagedMB' = [System.Math]::Round(($PerfOS_Memory.PoolPagedBytes/1mb),2) 'PoolNonpagedMB' = [System.Math]::Round(($PerfOS_Memory.PoolNonpagedBytes/1mb),2) 'TotalPhysicalMemory' = [System.Math]::Round(($TotalPhysicalMemory/1gb),2) 'ModuleSize' = ($PhysicalMemory | Group-Object -Property Capacity | % {[string]$($_.Count.ToString() + ' x ' + ($_.Name / 1GB).ToString() + 'GB')}) -join ', ' } } $PerfOS_Memory = $Null $PhysicalMemory = $Null $TotalPhysicalMemory = $Null $WmiRequestError = $Null } } END {} |