Kiểm tra thời gian hoạt động của domain controller với Powershell
Khi tương tác với các hệ điều hành Windows, cũng như với các tính năng của Windows Server, PowerShell cho thấy tính linh hoạt khá cao. Microsoft hỗ trợ các module PowerShell cho hầu hết tất cả các vai trò và tính năng. Mặc dù không có module PowerShell tích hợp sẵn để kiểm tra thời gian hoạt động của domain controllers (DC), bạn cùng Bizfly Cloud tìm hiểu cách sử dụng các lớp PowerShell và WMI cơ bản qua bài viết này nhé!
Tại sao cần phải kiểm tra thời gian hoạt động của DC?
Trước khi bắt đầu sử dụng các PowerShell script, cần lưu ý rằng DC bắt buộc phải được vá đúng cách để tránh mọi rủi ro bảo mật. Ví dụ: nếu DC đã được kích hoạt và chạy được hơn hai tháng, điều này có thể tương đương với một số dấu hiệu cho thấy DC có thể chưa được vá và đó là lý do tại sao trình điều khiển chưa được khởi động lại. Vì vậy, bằng cách kiểm tra thời gian hoạt động, bạn có thể tìm hiểu xem DC đã được vá hay chưa bởi vì việc vá sẽ yêu cầu khởi động lại để đặt lại thời gian hoạt động. Thứ hai, DC phải được khởi động lại thường xuyên để giải phóng bộ nhớ từ LSASS.exe.
Cách kiểm tra thời gian hoạt động của một DC
Bạn có thể sử dụng PowerShell để kiểm tra thời gian hoạt động của DC. Để làm vậy, chúng ta có thể sử dụng lệnh cmdlet Get-WmiObject PowerShell để truy cập vào lớp Win23_OperatingSystem – nơi có chứa thuộc tính LastBootUpTime. Thuộc tính LastBootUpTime hiển thị thời gian khởi động gần nhất của DC.
Một ví dụ về việc kiểm tra thời gian hoạt động của DC có thể thực hiện như trong PowerShell script dưới đây:
$DCName = "DC1.TechGenix.com" $operatingSystem = Get-WmiObject Win32_OperatingSystem -ComputerName $DCName $RTime=[ManagementDateTimeConverter]::ToDateTime($operatingSystem.LastBootUpTime) $LocalTime=[ManagementDateTimeConverter]::ToDateTime($operatingSystem.LocalDateTime) $CurTimeZone=$operatingSystem.CurrentTimeZone $StatusNow = "" $R = $RTime $Z = Get-Date $DayNotRebooted = (New-TimeSpan -Start $R -End $Z).Days IF ($DayNotRebooted -ge 60) { $StatusNow = "WARNING: Not rebooted in last 60 days." } else { $StatusNow = "domain controller was rebooted within 60 days." } $StatusNow
Như bạn thấy, PowerShell script ở trên kiểm tra thời gian hoạt động của DC có tên là DC1.TechGenix.com và sẽ thông báo: "WARNING: Not rebooted in last 60 days" trong trường hợp DC không được khởi động lại trong 60 ngày qua và "domain controller was rebooted within 60 days" nếu DC đã được khởi động lại trong vòng 60 ngày.
Bạn có thể sửa đổi giá trị "days not rebooted" trong các tập lệnh trên tại dòng: "IF ($DaysNotRebooted –qe 60)"
Cách kiểm tra thời gian hoạt động cho nhiều DC
Nếu PowerShell script ở trên kiểm tra thời gian hoạt động cho chỉ một DC, thì PowerShell script dưới đây có thể được sử dụng để kiểm tra thời gian hoạt động cho nhiều DC hoặc DC cụ thể trong một tệp CSV. Giả sử chúng ta tạo một tệp CSV có tên AllDCs.CSV và lưu trữ trong thư mục C:\Temp. File có chứa DC trên mỗi dòng. Khi bạn thực hiện PowerShell script bên dưới, lệnh sẽ kiểm tra từng DC một và sau đó tạo một báo cáo trong thư mục C:\Temp theo tên DCUpTimeReport.CSV.
$AllDCs = "C:\Temp\AllDCs.CSV" $ReportFile = "C:\Temp\DCUpTimeReport.CSV" $STR = "DCName, Message" Add-Content $ReportFile $STR ForEach ($ItemName in GC $AllDCs) { $operatingSystem = Get-WmiObject Win32_OperatingSystem -ComputerName $ItemName $RTime=[ManagementDateTimeConverter]::ToDateTime($operatingSystem.LastBootUpTime) $LocalTime=[ManagementDateTimeConverter]::ToDateTime($operatingSystem.LocalDateTime) $CurTimeZone=$operatingSystem.CurrentTimeZone $StatusNow = "" $R = $RTime $Z = Get-Date $DayNotRebooted = (New-TimeSpan -Start $R -End $Z).Days IF ($DayNotRebooted -ge 60) { $StatusNow = "WARNING: Not rebooted in last 60 days." } else { $StatusNow = "domain controller was rebooted within 60 days." } $STR = $ItemName+","+$StatusNow Add-Content $ReportFile $STR
Sau khi thực thi tập lệnh PowerShell ở trên, một báo cáo sẽ được tạo bao gồm tên của DC và thông báo kèm theo cho từng DC như trong ảnh chụp màn hình bên dưới:
Như bạn có thể thấy trong ảnh chụp màn hình ở trên, báo cáo cho thấy DC2.TechGenix.com, DC3.TechGenix.com và DC5.TechGenix.com yêu cầu khởi động lại vì các DC này đã không được khởi động lại trong hơn 60 ngày.
Theo Techgenix.com
>> Có thể bạn quan tâm: Các câu lệnh Powershell đơn giản cho mọi hệ điều hành Windows