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 เจ๋งๆ!


