ค้นหาเว็บไซต์

PowerShell: แสดงสถานะการออนไลน์ของเซิร์ฟเวอร์ Windows ทั้งหมด


สมมติว่าคุณต้องการดูภาพรวมสถานะการออนไลน์ของเซิร์ฟเวอร์ Windows ทั้งหมดในโดเมนของคุณ นี่เป็นข้อมูลที่สำคัญมากและคุณควรตรวจสอบสถานะการออนไลน์ของบริการของคุณเป็นประจำ คุณจำ 5 เก้า ได้ไหม? สิ่งที่ฉันกำลังพูดถึงคือความพร้อมในการให้บริการ 99,999 % คุณค่าดังกล่าวเป็นที่รู้จักกันดีว่าเป็นพื้นฐานสำหรับการบริการที่ดี

เป้าหมาย

ฉันชอบที่จะเริ่มต้นด้วยเป้าหมายก่อน ผู้อ่านจะมีโอกาสเห็นว่าเป้าหมายคืออะไรและตัดสินใจว่าควรอ่านต่อหรือไม่ ตามที่สัญญาไว้ ฉันจะให้คำสั่ง Powershell แก่คุณเพื่อรับเวลาทำงานทั้งหมดจากโดเมนที่เปิดใช้งานทั้งหมดที่เข้าร่วม Windows Servers ฉันได้สร้างฟังก์ชันเล็กๆ ที่ไม่มีพารามิเตอร์ใดๆ ที่เรียกว่า Get-UpTimeAllServer

ผลลัพธ์จะมีลักษณะดังนี้:

หากเซิร์ฟเวอร์ตัวใดตัวหนึ่งของคุณไม่สามารถเข้าถึงได้เนื่องจากเครือข่ายล้มเหลว ไม่มีการกำหนดค่า WinRM หรือด้วยเหตุผลอื่นใด เซิร์ฟเวอร์จะถูกแท็กเป็น “ไม่สามารถเข้าถึงเซิร์ฟเวอร์”

ฟังก์ชั่น

สิ่งที่แสดงด้านบนทั้งหมดรวมอยู่ในฟังก์ชัน นี่คือ:


function Get-UpTimeAllServer {

# .SYNOPSIS
# Get-UpTimeAllServer is an advanced Powershell function. It shows the uptime of all domain joined and enabled Windows servers.

# .DESCRIPTION
# Uses Get-CimInstance and a Try/Catch block.

# .PARAMETER
# None

# .EXAMPLE
# Get-UpTimeAllServer

# .NOTES
# Author: Patrick Gruenauer
# Web: https://sid-500.com

$servers=(Get-ADComputer -Filter 'operatingsystem -like "*server*"-and enabled -eq "true"').Name
$result=@()

Foreach ($s in $servers) {

Try {

$up=(Get-CimInstance -ClassName win32_operatingsystem -ComputerName $s -ErrorAction Stop).LastBootUpTime
$uptime=((Get-Date) - $up)
$result+=New-Object -TypeName PSObject -Property ([ordered]@{
'Server'=$s
'LastBootUpTime'=$up
'Days'=$uptime.Days
'Hours'=$uptime.Hours
'Minutes'=$uptime.Minutes
'Seconds'=$uptime.Seconds
})
}
Catch {

$result+=New-Object -TypeName PSObject -Property ([ordered]@{
'Server'=$s
'LastBootUpTime'='Server could not be reached'
})

}
}
}

คุณสามารถดาวน์โหลดฟังก์ชันได้ที่นี่:

รับ UpTimeAllServer

เรียกใช้สคริปต์นี้ใน PowerShell หรือคัดลอกไปที่

C:\Program Files\WindowsPowerShell\Modules

สร้างโฟลเดอร์ Get-UpTimeAllServer ที่นั่น และบันทึกไฟล์ที่ดาวน์โหลดเป็นไฟล์ PSM1 จากนั้นคำสั่งจะพร้อมใช้งานทุกครั้งที่คุณเริ่ม PowerShell

พบกันใหม่คราวหน้ากับ Powershell เจ๋งๆ!

บทความที่เกี่ยวข้อง