Hãy nhớ đọc các bài viết trước trong loạt bài này:
- Tìm hiểu cách tự động hóa Windows bằng PowerShell
- Học cách sử dụng Cmdlets trong PowerShell
- Học cách sử dụng các đối tượng trong PowerShell
- Học cách định dạng, lọc và so sánh trong PowerShell
- Tìm hiểu cách sử dụng Remoting trong PowerShell
- Sử dụng PowerShell để lấy thông tin máy tính
- Làm việc với các bộ sưu tập trong PowerShell
- Tìm hiểu cách sử dụng công việc trong PowerShell
- Tìm hiểu cách mở rộng PowerShell
- Học các biến PowerShell, đầu vào và đầu ra
Viết kịch bản đầu tiên của bạn
Điều đầu tiên chúng ta cần làm là tìm cách truy cập thông tin mà chúng tôi đang tìm kiếm. Vì chúng ta đang xử lý thông tin quản lý, có lẽ chúng ta cần xem xét sử dụng WMI, thực sự có một lớp gọi là Win32_OperatingSystem cho phép bạn xem thông tin chi tiết về hệ điều hành của bạn, bao gồm cả lần cuối cùng nó khởi động.
Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost |
Select-Object -Property CSName,LastBootUpTime
Lưu ý: Tôi đã phải chia mã của tôi trên hai dòng để tất cả đều phù hợp với ảnh chụp màn hình, nhưng bạn có thể gõ nó trên một dòng. Nếu bạn chọn chia nó thành hai dòng, hãy đảm bảo rằng ký tự ống là ký tự cuối cùng trên dòng 1.
Thời gian WMI có thể hơi khó hiểu. Bằng cách đó, chúng tôi có nghĩa là nếu bạn nhìn vào tài sản LastBootUpTime, nó nói 2013-03-19 lúc 18:26:21, nhưng vì lý do nào đó, các nhân viên WMI đã quyết định ghép tất cả chúng vào một chuỗi đơn. May mắn cho chúng tôi, chúng tôi không phải lo lắng về việc phân tích cú pháp chuỗi theo cách thủ công vì có cách dễ dàng hơn để thực hiện việc đó, mặc dù nâng cao hơn. Bạn sẽ cần thay đổi phần Chọn đối tượng của mã để trông giống như sau:
Select-Object -Property CSName,@{n=”Last Booted”;
e={[Management.ManagementDateTimeConverter]::ToDateTime($_.LastBootUpTime)}}
Những gì chúng ta đang làm ở đây là tạo một thuộc tính tùy chỉnh được gọi là "Last Booted" và xác định rằng giá trị của nó phải là kết quả của việc gọi phương thức tĩnh ToDateTime trên thuộc tính LastBootUpTime của đối tượng đường ống hiện tại. Mã của bạn bây giờ sẽ trông như thế này.
C:Get-LastBootTime.ps1
C:Get-LastBootTime.ps1
param( [string]$ComputerName )
Sau đó thay thế giá trị localhost được mã hóa bằng biến $ ComputerName. Kịch bản của bạn bây giờ sẽ trông như thế này:
help C:Get-LastBootTime.ps1
[Parameter(Mandatory=$true)][string]$ComputerName
Để tạo một tệp trợ giúp tốt hơn, phương pháp phổ biến nhất là sử dụng trợ giúp dựa trên nhận xét. Điều đó có nghĩa là chúng tôi chỉ thêm một nhận xét dài thêm vào đầu tập lệnh.
<#.SYNOPSIS Shows when last your PC started up..DESCRIPTION This is a WMI wrapper function to get the time that your PC last started up..PARAMETER ComputerName The name of the Computer you want to run the command against..EXAMPLE Get-LastBootTime -ComputerName localhost.LINK www.howtogeek.com #>
Một khi tất cả được thực hiện, bạn nên kết thúc với một kịch bản như thế này.