PowerShell指令碼遠端獲取多臺伺服器系統狀態(CPU、記憶體、執行服務)
#本指令碼獲取遠端伺服器的CPU使用情況
#選擇伺服器名稱的錄入方式
if (!$continue)
{
$continue = Read-Host "是否手動輸入伺服器名稱,請選擇 Y 手動輸入 或 N 從文字檔案讀取"
}
if ($continue -ne "N")
{
#手動批量錄入伺服器名稱
$listadd = $false
$list = 1
$ComPList = New-Object System.Collections.ArrayList #定義PSList陣列
While ($listadd -eq $false)
{
if($ComPName -eq "N")
{
$listadd = $true
}
else
{
$ComPName = Read-Host "請輸入第 $list 臺伺服器名稱(按N鍵結束輸入)"
if($ComPName -ne "N")
{
$ComPList.Add("$ComPName")
$list += 1
}
}
}
}
else
{
$filepath = Read-Host "請輸入文字檔案地址(文字文件內參數需每輸入一個換一次行)"
$ComPList = Get-Content "$filepath"
}
#輸出結果
foreach ($Server in $ComPList)
{
#伺服器CPU、記憶體、硬碟使用資訊
$cpu = gwmi –computername $Server win32_Processor
$men = gwmi -ComputerName $Server win32_OperatingSystem
$Disks = gwmi –computername $Server win32_logicaldisk -filter "drivetype=3"
$Havecpu = "{0:0.0} %" -f $cpu.LoadPercentage
$Allmen = "{0:0.0} MB" -f ($men.TotalVisibleMemorySize / 1KB)
$Freemen = "{0:0.0} MB" -f ($men.FreePhysicalMemory / 1KB)
$Permem = "{0:0.0} %" -f ((($men.TotalVisibleMemorySize-$men.FreePhysicalMemory)/$men.TotalVisibleMemorySize)*100)
Write-Host "伺服器$Server 當前系統狀態資訊如下:" -ForegroundColor Red
Write-Host "============================================================"
Write-Host "CPU利用率: $Havecpu" -ForegroundColor Green
Write-Host "記憶體總數:$Allmen" -ForegroundColor Green
Write-Host "記憶體可用數:$Freemen" -ForegroundColor Green
Write-Host "記憶體使用率:$Permem" `n -ForegroundColor Green
foreach ($Disk in $Disks)
{
$Size = "{0:0.0} GB" -f ($Disk.Size / 1GB )
$FreeSpace = " {0:0.0} GB" -f ($Disk.FreeSpace / 1GB)
$Used = ([int64]$Disk.size - [int64]$Disk.freespace)
$SpaceUsed = " {0:0.0} GB" -f ($Used / 1GB)
$Percent ="{0:0.0} %" -f ($Used * 100 / $Disk.Size)
Write-Host $Disk.deviceid $Disk.volumename"盤總空間: $Size" -ForegroundColor Green
Write-Host $Disk.deviceid $Disk.volumename"空閒空間: $FreeSpace" -ForegroundColor Green
Write-Host $Disk.deviceid $Disk.volumename"使用空間: $SpaceUsed" -ForegroundColor Green
Write-Host $Disk.deviceid $Disk.volumename"使用百分比: $Percent `n" -ForegroundColor Green
}
Write-Host "============================================================"
#獲取當前正在執行的服務名稱
Write-Host "伺服器$Server 當前正在執行的服務如下:" -ForegroundColor Red
Write-Host "============================================================"
get-service -ComputerName $Server| where-object {$_.Status -eq "Running"} | format-table -property Name,DisplayName -auto
Write-Host "============================================================"
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
執行效果如下: