Functions/PlatformManagement/Get-FpsComputerInfo.ps1
<#
.SYNOPSIS Returns general information about the system. .DESCRIPTION Returns the computer name, domain name, OS, OS Version, PS Version, Memory total and available, CPU name, Total sockets, cores and threads. .EXAMPLE Get-FpsComputerInfo .EXAMPLE Get-FpsComputerInfo -Computer 'MyRemoteComputer' #> function Get-FpsComputerInfo { [CmdletBinding()] param( [string] $Computer = $env:COMPUTERNAME ) [scriptblock] $ScriptBlock = { $OperatingSystem = Get-CimInstance -ClassName Win32_OperatingSystem $Processor = Get-CimInstance -ClassName Win32_Processor # Calculate total available CPU Cores $TotalCPUCores = 0 $Processor.NumberOfCores | ForEach-Object {$TotalCPUCores += $_ } # Calculate total available CPU threads $TotalCPUThreads = 0 $Processor.ThreadCount | ForEach-Object {if($_){ $TotalCPUThreads += $_ }} if ($TotalCPUThreads -eq 0){$TotalCPUThreads = $TotalCPUCores} # Create custom PowerShell object with system information $SystemInfo = New-Object psobject -Property ([ordered] @{ 'ComputerName' = hostname 'DomainName' = $env:USERDNSDOMAIN 'OSName' = $OperatingSystem.Caption 'OSVersion' = $OperatingSystem.Version 'PSVersion' = $PSVersionTable.PSVersion.ToString() 'TotalMemoryGB' = [math]::round($OperatingSystem.TotalVisibleMemorySize/1024/1024) 'TotalFreeMemoryGB'= [math]::round(($OperatingSystem.FreePhysicalMemory/1024/1024), 1) 'CPUName' = ($Processor | Select-Object -First 1).Name 'TotalCPUSocket' = ($Processor | Measure-Object).Count 'TotalCPUCores' = $TotalCPUCores 'TotalCPUThreads' = $TotalCPUThreads }) $SystemInfo } $AdditionParams = @{} if ($Computer -ne 'localhost' -and $Computer -ne $env:COMPUTERNAME) { $AdditionParams = @{'ComputerName' = $Computer} } Invoke-Command @AdditionParams -ScriptBlock $ScriptBlock } Export-ModuleMember -Function Get-FpsComputerInfo |