Trường học Geek Viết kịch bản PowerShell đầy đủ đầu tiên của bạn
Vài tuần trước, Geek đã chỉ cho bạn cách bạn có thể sử dụng dấu nhắc lệnh để tìm khi máy tính của bạn khởi động lần cuối. Trong lần cài đặt cuối cùng này của Geek School cho PowerShell, chúng tôi sẽ viết một lệnh PowerShell có thể sử dụng lại để làm điều tương tự.
Hãy chắc chắn đọc các bài viết trước trong loạt bài:
- Tìm hiểu cách tự động hóa Windows với 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 định dạng, lọc và so sánh trong PowerShell
- Tìm hiểu cách sử dụng từ xa trong PowerShell
- Sử dụng PowerShell để lấy thông tin máy tính
- Làm việc với 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 ta đang tìm kiếm. Vì chúng tôi đang xử lý thông tin quản lý, có lẽ chúng tôi cần xem qua việc sử dụng WMI, thực sự có một lớp có tên Win32_OperatingSystem cho phép bạn xem thông tin dài dòng về hệ điều hành của mình, kể cả lần cuối cùng nó khởi động.
Vì vậy, bây giờ chúng tôi biết nơi chúng tôi có thể tìm thấy thông tin chúng tôi đang tìm kiếm, hãy mở ISE và nhập thông tin sau.
Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |
Chọn-Object -Property CSName, LastBootUpTime
Lưu ý: Tôi đã phải chia mã của mình thành hai dòng để tất cả phù hợp với ảnh chụp màn hình, nhưng hãy thoải mái nhập mã trên một dòng. Nếu bạn chọn tách nó thành hai dòng, vui lòng đảm bảo rằng ký tự ống là ký tự cuối cùng trên dòng 1.
Bây giờ hãy nhấp vào nút màu xanh lá cây Run Run Script hoặc nhấn phím F5 trên bàn phím của bạn để kiểm tra mã.
Thời gian WMI có thể là một chút khó hiểu. Điều đó có nghĩa là nếu bạn nhìn vào thuộc tính LastBootUpTime, nó nói 2013-03-19 lúc 18:26:21, nhưng vì một số lý do, các chàng trai WMI đã quyết định ghép tất cả những điều đó thành một chuỗi. May mắn thay 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ó một cách dễ dàng hơn để làm điều đó, 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 như thế này:
Chọn-Object -Property CSName, @ n = Lần khởi động cuối cùng;
e = [Management.Man Quản lýDateTimeConverter] :: 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ó tên là Last 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ờ trông như thế này.
Chạy mã bây giờ sẽ mang lại thời gian khởi động cuối dễ đọc hơn nhiều.
Bây giờ chúng tôi hài lòng với chức năng cơ bản của tập lệnh của mình, chúng tôi cần lưu nó. Để đơn giản, hãy lưu nó như sau:
C: \ Get-LastBootTime.ps1
Bây giờ chuyển sang nửa dưới của ISE và chạy như sau:
C: \ Get-LastBootTime.ps1
Tuyệt quá! Kịch bản của chúng tôi đang hoạt động như mong đợi, tuy nhiên vẫn còn một vấn đề với kịch bản của chúng tôi. Chúng tôi đã mã hóa tên của máy tính mà chúng tôi muốn có thời gian khởi động cuối cùng. Thay vì các giá trị mã hóa cứng, chúng ta nên cung cấp một tham số để bất kỳ ai đang sử dụng tập lệnh đều có thể chọn máy tính nào họ chạy tập lệnh. Để làm điều đó, đi đến đầu tập lệnh của bạn và làm như sau.
thông số (
[chuỗi] $ Tên máy tính
)
Sau đó thay thế giá trị localhost được mã hóa cứng bằng biến $ ComputerName. Kịch bản của bạn sẽ trông như thế này:
Lưu tập lệnh của bạn, sau đó quay lại nửa dưới của ISE và xem trợ giúp cho tập lệnh của bạn.
trợ giúp C: \ Get-LastBootTime.ps1
Tuyệt vời, vì vậy bây giờ chúng tôi có thể chỉ định tên của máy tính mà chúng tôi muốn có thời gian khởi động cuối cùng để sử dụng tham số ComputerName mới của chúng tôi. Thật không may, vẫn còn một vài điều sai. Thứ nhất, tham số ComputerName là tùy chọn và thứ hai, đó là hữu ích xấu nhất tôi từng thấy, vì vậy hãy nhanh chóng khắc phục những vấn đề đó. Để bắt buộc tham số ComputerName, hãy thay đổi nội dung của khối param thành như sau.
[Tham số (Bắt buộc = $ true)] [chuỗi] $ ComputerName
Đối với việc 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ỉ cần thêm một bình luận dài vào đầu tập lệnh.
<#
.TÓM TẮC
Hiển thị khi PC cuối cùng của bạn khởi động.
.SỰ MIÊU TẢ
Đây là chức năng bao bọc WMI để có được thời gian PC của bạn khởi động lần cuối.
.Tên máy tính PARAMETER
Tên của Máy tính bạn muốn chạy lệnh chống lại.
.THÍ DỤ
Get-LastBootTime -ComputerName localhost
.LIÊN KẾT
www.howtogeek.com
#>
Khi tất cả đã xong, bạn sẽ kết thúc với một kịch bản trông như thế này.
Bây giờ chúng ta hãy đi và kiểm tra tập tin trợ giúp mới của chúng tôi.
Ahhh, nhìn tuyệt vời! Bây giờ kịch bản của chúng tôi đã hoàn tất, chúng tôi có một việc cuối cùng phải làm: thử nghiệm. Đối với điều này, tôi sẽ thoát ra khỏi ISE và quay trở lại bảng điều khiển PowerShell để chúng tôi có thể đảm bảo rằng không có bất thường.
Nếu bạn bắt đầu với một lớp lót đơn giản và chỉ cần tiếp tục xây dựng nó như chúng tôi đã làm trong hướng dẫn này, bạn sẽ nhận được ngay lập tức. Đó là tất cả cho lần này mọi người, hẹn gặp lại trong phần cài đặt tiếp theo của Geek School.