Get-WindowsMemory.ps1
<#PSScriptInfo .VERSION 1.0.2 .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 #> [CmdletBinding()] param( [Parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)][Alias("Host","DNSHostName","IP","IPAddress")][string[]]$ComputerName = $env:COMPUTERNAME, [PSCredential]$Credential ) $ComputerCount = $ComputerName.count [int]$i = 0 $ComputerName | % { if($ComputerCount -gt 1){Write-Progress -Activity $_ -PercentComplete ($i / $ComputerCount * 100)} $i += 1 if($_ -eq $env:COMPUTERNAME){ try{ $PerfOS_Memory = Get-WmiObject -Class Win32_PerfRawData_PerfOS_Memory -ComputerName $_ -ErrorVariable WmiRequestError $PhysicalMemory = Get-WmiObject -Class Win32_PhysicalMemory -ComputerName $_ -ErrorVariable WmiRequestError $TotalPhysicalMemory = ($PhysicalMemory | Measure-Object -Sum -Property Capacity).Sum } Catch {$WmiRequestError; break} } else { try{ $PerfOS_Memory = Get-WmiObject -Class Win32_PerfRawData_PerfOS_Memory -ComputerName $_ -Credential $Credential -ErrorVariable WmiRequestError $PhysicalMemory = Get-WmiObject -Class Win32_PhysicalMemory -ComputerName $_ -Credential $Credential -ErrorVariable WmiRequestError $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) } } $PerfOS_Memory = $Null $PhysicalMemory = $Null $TotalPhysicalMemory = $Null $WmiRequestError = $Null } |