Get-PC/Private/Resources.ps1

66 lines
3.3 KiB
PowerShell
Raw Normal View History

2024-06-11 18:27:55 +00:00
function get-resources {
param ( $pc )
$sBlock = {
try {$win32_LogicalDisk = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" } catch {$win32_LogicalDisk = $null} #| Diskspace
$obj = New-Object -TypeName PSObject
# Get system information
$sysInfo = Get-WmiObject -Class Win32_OperatingSystem
$sysProc = Get-WmiObject -Class Win32_Processor
$sysMem = Get-WmiObject -Class Win32_PhysicalMemory
# Get processor usage
$procUsage = [math]::Round((Get-Counter '\Processor(_Total)\% Processor Time').CounterSamples.CookedValue)
# Get memory usage
$memUsage = [Math]::Round((1 - (Get-Counter '\Memory\Available MBytes').CounterSamples.CookedValue/($sysMem.Capacity/1MB))*100,1)
# Get Physical Network Adapter information
$netAdapters = Get-NetAdapter -physical | Where-Object status -eq 'up'
#Free Harddrive Space
$CompFreeSpace = @([math]::Round($win32_LogicalDisk.FreeSpace / 1gb,2),[math]::Round($win32_LogicalDisk.Size / 1gb,2))
$freeDisk = $compFreeSpace[0]
$maxDisk = $compfreeSpace[1]
$obj | Add-Member -MemberType NoteProperty -Name 'OS' -Value $($sysInfo.Caption)
$obj | Add-Member -MemberType NoteProperty -Name 'Version' -Value $($sysInfo.Version)
$obj | Add-Member -MemberType NoteProperty -Name 'TotalMem' -Value $($sysMem.Capacity/1GB)
$obj | Add-Member -MemberType NoteProperty -Name 'MemUsage' -Value $memUsage
$obj | Add-Member -MemberType NoteProperty -Name 'Processor' -Value $($sysProc.Name)
$obj | Add-Member -MemberType NoteProperty -Name 'NumberOfCores' -Value $($sysProc.NumberOfCores)
$obj | Add-Member -MemberType NoteProperty -Name 'ProcUsage' -Value $procUsage
$obj | Add-Member -MemberType NoteProperty -Name 'NetAdapters' -Value $netAdapters
$obj | Add-Member -MemberType NoteProperty -Name 'freeDisk' -Value $freeDisk
$obj | Add-Member -MemberType NoteProperty -Name 'maxDisk' -Value $maxDisk
return $obj
}
$output = @()
$output += Invoke-Command -ScriptBlock $sblock -ComputerName $pc -SessionOption (New-PSSessionOption -NoMachineProfile -OpenTimeout 45000) | Select-Object * -ExcludeProperty RunspaceId, PSComputerName, PSShowComputerName
# Display system information
Write-Host "System Information:"
Write-Host "-------------------"
Write-Host "Computer Name: $pc"
Write-Host "Operating System: $($output.OS)"
Write-Host "Version: $($output.Version)"
Write-Host "Total Physical Memory: $($output.TotalMem) GB, Memory Usage: $($output.memUsage) %"
Write-Host "Processor: $($output.Name) $($output.NumberOfCores) cores, Processor Usage: $($output.procUsage)%"
Write-Host "Free Disk Space: $($output.freeDisk) GB / $($output.maxDisk) GB"
2024-06-11 18:27:55 +00:00
Write-Host "-------------------"
Write-Host "Physical Network Adapters:"
foreach ($netAdapter in $output.netAdapters) {
$speed = $netAdapter.Speed
if ($speed -gt 1000000000) {
$speed = "{0} Gbps" -f ($speed/1000000000)
} else {
if($speed -gt 1000000){
$speed = "{0} Mbps" -f ($speed/1000000)
}
}
Write-Host "Name: $($netAdapter.InterfaceDescription) Type: $($netAdapter.name), Link Speed: $speed"
}
}