126 lines
No EOL
7 KiB
PowerShell
126 lines
No EOL
7 KiB
PowerShell
function Get-HardwareNoJob {
|
|
param (
|
|
$ComputerName,
|
|
$Port = 8443,
|
|
$User = "rest",
|
|
$Pass = "api"
|
|
)
|
|
if ($null -eq $ComputerName) {
|
|
$Collection = New-Object System.Collections.Generic.List[System.Object]
|
|
$SYS = Get-CimInstance Win32_ComputerSystem
|
|
$BootTime = Get-CimInstance -ComputerName $srv Win32_OperatingSystem |
|
|
Select-Object LocalDateTime,
|
|
LastBootUpTime
|
|
$Uptime = ([string]($BootTime.LocalDateTime - $BootTime.LastBootUpTime) -split ":")[0,1] -join ":"
|
|
$BootDate = Get-Date -Date $BootTime.LastBootUpTime -Format "dd/MM/yyyy hh:mm:ss"
|
|
$OS = Get-CimInstance Win32_OperatingSystem
|
|
$BB = Get-CimInstance Win32_BaseBoard
|
|
$BBv = $BB.Manufacturer+" "+$BB.Product+" "+$BB.Version
|
|
$CPU = Get-CimInstance Win32_Processor |
|
|
Select-Object Name,
|
|
@{Label="Core"; Expression={$_.NumberOfCores}},
|
|
@{Label="Thread"; Expression={$_.NumberOfLogicalProcessors}}
|
|
$CPU_Use_Proc = [string]((Get-CimInstance Win32_PerfFormattedData_PerfOS_Processor -ErrorAction Ignore |
|
|
Where-Object name -eq "_Total").PercentProcessorTime)+" %"
|
|
$GetProcess = Get-Process
|
|
$Process_Count = $GetProcess.Count
|
|
$Threads_Count = $GetProcess.Threads.Count
|
|
$Handles_Count = ($GetProcess.Handles | Measure-Object -Sum).Sum
|
|
$ws = ((($GetProcess).WorkingSet | Measure-Object -Sum).Sum/1gb).ToString("0.00 GB")
|
|
$pm = ((($GetProcess).PM | Measure-Object -Sum).Sum/1gb).ToString("0.00 GB")
|
|
$Memory = Get-CimInstance Win32_OperatingSystem
|
|
$MemUse = $Memory.TotalVisibleMemorySize - $Memory.FreePhysicalMemory
|
|
$MemUserProc = ($MemUse / $Memory.TotalVisibleMemorySize) * 100
|
|
$MEM = Get-CimInstance Win32_PhysicalMemory |
|
|
Select-Object Manufacturer,
|
|
PartNumber,
|
|
ConfiguredClockSpeed,@{Label="Memory"; Expression={[string]($_.Capacity/1Mb)}}
|
|
$MEMs = $MEM.Memory | Measure-Object -Sum
|
|
$PhysicalDisk = Get-CimInstance Win32_DiskDrive |
|
|
Select-Object Model,
|
|
@{Label="Size"; Expression={[int]($_.Size/1Gb)}}
|
|
$PDs = $PhysicalDisk.Size | Measure-Object -Sum
|
|
$LogicalDisk = Get-CimInstance Win32_logicalDisk | Where-Object {$null -ne $_.Size} |
|
|
Select-Object @{Label="Value"; Expression={$_.DeviceID}},
|
|
@{Label="AllSize"; Expression={([int]($_.Size/1Gb))}},
|
|
@{Label="FreeSize"; Expression={([int]($_.FreeSpace/1Gb))}},
|
|
@{Label="Free%"; Expression={[string]([int]($_.FreeSpace/$_.Size*100))+" %"}}
|
|
$LDs = $LogicalDisk.AllSize | Measure-Object -Sum
|
|
$IOps = Get-CimInstance Win32_PerfFormattedData_PerfDisk_PhysicalDisk -ErrorAction Ignore |
|
|
Where-Object { $_.Name -eq "_Total" } |
|
|
Select-Object Name,
|
|
@{name="TotalTime";expression={"$($_.PercentDiskTime) %"}},
|
|
@{name="IOps";expression={$_.DiskTransfersPersec}},
|
|
@{name="ReadBytesPersec";expression={$($_.DiskReadBytesPersec/1mb).ToString("0.000 MByte/Sec")}},
|
|
@{name="WriteBytesPersec";expression={$($_.DiskWriteBytesPersec/1mb).ToString("0.000 MByte/Sec")}}
|
|
$VideoCard = Get-CimInstance Win32_VideoController |
|
|
Select-Object @{Label="VideoCard"; Expression={$_.Name}},
|
|
@{Label="Display"; Expression={[string]$_.CurrentHorizontalResolution+"x"+[string]$_.CurrentVerticalResolution}},
|
|
@{Label="vRAM"; Expression={([int]$($_.AdapterRAM/1Gb))}}
|
|
$VCs = $VideoCard.vRAM | Measure-Object -Sum
|
|
$NetworkAdapter = Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true
|
|
$NAs = $NetworkAdapter | Measure-Object
|
|
$InterfaceStatCurrent = Get-CimInstance -ClassName Win32_PerfFormattedData_Tcpip_NetworkInterface |
|
|
Select-Object Name,
|
|
@{name="Total";expression={$($_.BytesTotalPersec/1mb).ToString("0.000 MByte/Sec")}},
|
|
@{name="Received";expression={$($_.BytesReceivedPersec/1mb).ToString("0.000 MByte/Sec")}},
|
|
@{name="Sent";expression={$($_.BytesSentPersec/1mb).ToString("0.000 MByte/Sec")}}
|
|
$InterfaceStatAll = Get-CimInstance -ClassName Win32_PerfRawData_Tcpip_NetworkInterface |
|
|
Select-Object Name,
|
|
@{name="Total";expression={$($_.BytesTotalPersec/1gb).ToString("0.00 GByte")}},
|
|
@{name="Received";expression={$($_.BytesReceivedPersec/1gb).ToString("0.00 GByte")}},
|
|
@{name="Sent";expression={$($_.BytesSentPersec/1gb).ToString("0.00 GByte")}}
|
|
$PortListenCount = $(Get-NetTCPConnection -State Listen).Count
|
|
$PortEstablishedCount = $(Get-NetTCPConnection -State Established).Count
|
|
$Collection.Add([PSCustomObject]@{
|
|
Host = $SYS.Name
|
|
Uptime = $uptime
|
|
BootDate = $BootDate
|
|
Owner = $SYS.PrimaryOwnerName
|
|
OS = $OS.Caption
|
|
Motherboard = $BBv
|
|
Processor = $CPU[0].Name
|
|
Core = $CPU[0].Core
|
|
Thread = $CPU[0].Thread
|
|
CPU = $CPU_Use_Proc
|
|
ProcessCount = $Process_Count
|
|
ThreadsCount = $Threads_Count
|
|
HandlesCount = [int]$Handles_Count
|
|
MemoryAll = [string]$($MEMs.Sum/1Kb)+" GB"
|
|
MemoryUse = ($MemUse/1mb).ToString("0.00 GB")
|
|
MemoryUseProc = [string]([int]$MemUserProc)+" %"
|
|
WorkingSet = $ws
|
|
PageMemory = $pm
|
|
MemorySlots = $MEMs.Count
|
|
PhysicalDiskCount = $PDs.Count
|
|
PhysicalDiskAllSize = [string]$PDs.Sum+" Gb"
|
|
LogicalDiskCount = $LDs.Count
|
|
LogicalDiskAllSize = [string]$LDs.Sum+" Gb"
|
|
DiskTotalTime = $IOps.TotalTime
|
|
DiskTotalIOps = $IOps.IOps
|
|
DiskTotalRead = $IOps.ReadBytesPersec
|
|
DiskTotalWrite = $IOps.WriteBytesPersec
|
|
VideoCardCount = $VCs.Count
|
|
VideoCardAllSize = [string]$VCs.Sum+" Gb"
|
|
NetworkAdapterEnableCount = $NAs.Count
|
|
NetworkReceivedCurrent = $InterfaceStatCurrent.Received
|
|
NetworkSentCurrent = $InterfaceStatCurrent.Sent
|
|
NetworkReceivedTotal = $InterfaceStatAll.Received
|
|
NetworkSentTotal = $InterfaceStatAll.Sent
|
|
PortListenCount = $PortListenCount
|
|
PortEstablishedCount = $PortEstablishedCount
|
|
})
|
|
$Collection
|
|
}
|
|
else {
|
|
$url = "http://$ComputerName"+":$Port/api/hardware"
|
|
$EncodingCred = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("${User}:${Pass}"))
|
|
$Headers = @{"Authorization" = "Basic ${EncodingCred}"}
|
|
try {
|
|
Invoke-RestMethod -Headers $Headers -Uri $url
|
|
}
|
|
catch {
|
|
Write-Error "Error connection"
|
|
}
|
|
}
|
|
} |