# Check if SMBIOS is present
   $os = Get-WmiObject Win32_bios -ComputerName $env:computername -ea silentlycontinue
   echo $os.SMBIOSPresent

# Check SMBIOS BIOSVersion
   $os = Get-WmiObject Win32_bios -ComputerName $env:computername -ea silentlycontinue
   echo $os.SMBIOSBIOSVersion

# Get BIOS version
   $os = Get-WmiObject Win32_bios -ComputerName $env:computername -ea silentlycontinue
   echo $os.Version

# Get BIOS information
   get-computerinfo |select *bios*

# Get CPU information
   get-computerinfo |select *processors

# Get another CPU information
#cpu_usage= Get-WmiObject win32_processor | Select-Object -ExpandProperty LoadPercentage
   $cpu_usage= Get-WmiObject win32_processor
   echo $cpu_usage | Format-table -Auto

# get information of RAM modules
   Get-WmiObject win32_physicalmemory | Select Manufacturer,Banklabel,Configuredclockspeed,Devicelocator,Capacity,Serialnumber | Format-Table -Auto

# Get average memory usage
   $os = Get-WmiObject win32_OperatingSystem
   $used_memory = $os.totalvisiblememorysize - $os.freephysicalmemory
   echo $used_memory

# Get average virtual memory usage
   $os = Get-WmiObject win32_OperatingSystem
   $used_memory = $os.totalvirtualmemorysize - $os.freevirtualmemory
   echo $used_memory

# Get total memory usage in percentage
   $CompObject =  Get-WmiObject -Class WIN32_OperatingSystem
   $Memory = ((($CompObject.TotalVisibleMemorySize - $CompObject.FreePhysicalMemory)*100)/ $CompObject.TotalVisibleMemorySize)
   Write-Host "Memory usage in Percentage:" $Memory
      
 # Top 5 process Memory Usage (MB)
    $processMemoryUsage = Get-WmiObject WIN32_PROCESS | Sort-Object -Property ws -Descending | Select-Object -first 5 processname,    @{Name="Mem Usage(MB)";Expression={[math]::round($_.ws / 1mb)}}
    $processMemoryUsage

# Get memory information
   Get-CIMInstance Win32_OperatingSystem | Select FreePhysicalMemory,TotalVisibleMemory

# Get memory usage
$properties=@(
    @{Name="Process Name"; Expression = {$_.name}},
    @{Name="CPU (%)"; Expression = {$_.PercentProcessorTime}},   
    @{Name="Memory (MB)"; Expression = {[Math]::Round(($_.workingSetPrivate / 1mb),2)}}
)
Get-WmiObject -class Win32_PerfFormattedData_PerfProc_Process -Filter "Name='_Total'" |
    Select-Object $properties |
    Format-Table -AutoSize

# Active Network Interface
    $physical_adapter = get-netadapter -physical | where status -eq "up"
   echo $physical_adapter

# Get average network usage
   $Total_bytes=Get-WmiObject -class Win32_PerfFormattedData_Tcpip_NetworkInterface | Measure-Object -property BytesTotalPersec -Average |Select-Object -ExpandProperty Average
   echo ([System.Math]::Round($Total_bytes))

# Check if Secure Boot is enabled
   try { $bios=Confirm-SecureBootUEFI }
   catch { $false }
   echo $bios

# Get Harddsk information
   Get-PhysicalDisk
# or
   Get-Disk | Format-table -Auto
# or
   Get-Volume
# or
   wmic diskdrive get name,model,serialnumber,size,status
# or
   Get-WmiObject -Class MSFT_PhysicalDisk -Namespace root\Microsoft\Windows\Storage | Select FriendlyName, MediaType
# or
   Get-WmiObject -Class Win32_logicaldisk -Filter "DriveType = '3'" |
   Select-Object -Property DeviceID, DriveType, VolumeName,
   @{L='FreeSpaceGB';E={"{0:N2}" -f ($_.FreeSpace /1GB)}},
   @{L="Capacity";E={"{0:N2}" -f ($_.Size/1GB)}}  


get all information together, text-file

query CPU temperatue

query video hardware

query USB hardware


#######
# printer
#######
# find printer name
   get-printer

# print file
   get-content -path <path/file> | out-printer -name "<name>"