Trường học Geek Tìm hiểu cách tự động hóa Windows với PowerShell
Trong phiên bản Geek School này, chúng tôi sẽ giúp bạn hiểu ngôn ngữ kịch bản PowerShell mạnh mẽ được tích hợp ngay trong Windows và cực kỳ hữu ích khi biết trong môi trường CNTT.
Mặc dù loạt bài này không được cấu trúc xung quanh một bài kiểm tra, học PowerShell là một trong những điều quan trọng nhất bạn có thể làm với tư cách là quản trị viên mạng, vì vậy nếu có một điều bạn muốn học để giúp đỡ sự nghiệp CNTT của mình, thì đó là. Thêm vào đó, nó rất vui.
Giới thiệu
PowerShell là công cụ tự động hóa mạnh mẽ nhất mà Microsoft cung cấp, cả vỏ và ngôn ngữ kịch bản của nó.
Xin lưu ý rằng loạt bài này dựa trên PowerShell 3, được phát hành cùng với Windows 8 và Server 2012. Nếu bạn đang chạy Windows 7, vui lòng tải xuống bản cập nhật PowerShell 3 trước khi tiếp tục.
Gặp gỡ Console và ISE
Có hai cách tương tác với PowerShell, Bảng điều khiển và Môi trường tập lệnh tích hợp - còn được gọi là ISE. ISE đã cải tiến rất nhiều so với phiên bản gớm ghiếc đi kèm với PowerShell 2 và có thể được mở bằng cách nhấn tổ hợp bàn phím Win + R để hiển thị hộp chạy, sau đó nhập powershell_ise và nhấn enter.
Như bạn có thể thấy ISE có chế độ xem tách để bạn có thể nhanh chóng tạo kịch bản trong khi vẫn có thể thấy kết quả ở nửa dưới của ISE. Nửa dưới của ISE, nơi kết quả của tập lệnh của bạn được in, cũng có thể được sử dụng như một dấu nhắc REPL - giống như dấu nhắc lệnh. ISE v3 cuối cùng đã thêm hỗ trợ cho intellisense trong cả khung kịch bản cũng như bảng điều khiển tương tác.
Ngoài ra, bạn có thể tương tác với PowerShell bằng Bảng điều khiển PowerShell, đây là thứ tôi sẽ sử dụng cho hầu hết loạt bài này. Bảng điều khiển PowerShell hoạt động giống như dấu nhắc lệnh - bạn chỉ cần nhập lệnh và nó sẽ đưa ra kết quả. Để mở Bảng điều khiển Windows PowerShell, nhấn lại tổ hợp bàn phím Win + R để mở hộp chạy và nhập powershell sau đó nhấn enter.
Các lời nhắc REPL như thế này là tuyệt vời cho sự hài lòng ngay lập tức: bạn nhập một lệnh và bạn nhận được kết quả. Mặc dù Bảng điều khiển không cung cấp intellisense, nhưng nó cung cấp một thứ gọi là hoàn thành tab có chức năng tương tự - chỉ cần bắt đầu nhập lệnh và nhấn tab để xoay vòng qua các kết quả khớp có thể.
Sử dụng hệ thống trợ giúp
Trong các phiên bản trước của PowerShell, các tệp trợ giúp được bao gồm khi bạn cài đặt Windows. Đây là một giải pháp tốt cho hầu hết các phần nhưng để lại cho chúng tôi một vấn đề quan trọng. Khi nhóm trợ giúp PowerShell phải ngừng hoạt động trên các tệp trợ giúp, các nhà phát triển PowerShell vẫn đang bận rộn mã hóa và thực hiện các thay đổi. Điều này có nghĩa là khi PowerShell xuất xưởng, các tệp trợ giúp không chính xác vì chúng không chứa các thay đổi mới hơn đã được thực hiện đối với mã. Để giải quyết vấn đề này, PowerShell 3 không có tệp trợ giúp nào trong hộp và bao gồm một hệ thống trợ giúp có thể cập nhật. Điều này có nghĩa là trước khi bạn làm bất cứ điều gì bạn muốn tải xuống các tệp trợ giúp mới nhất. Bạn có thể làm điều đó bằng cách mở Bảng điều khiển PowerShell và chạy:
Cập nhật-Trợ giúp
Chúc mừng bạn đã chạy lệnh PowerShell đầu tiên của mình! Sự thật là lệnh Update-Help có nhiều tùy chọn hơn chỉ đơn giản là chạy nó và để xem chúng, chúng ta sẽ muốn xem trợ giúp cho lệnh. Để xem trợ giúp cho lệnh, bạn chỉ cần chuyển tên của lệnh bạn muốn trợ giúp cho tham số Tên của lệnh Get-Help, ví dụ:
Nhận trợ giúp -Tên cập nhật-Trợ giúp
Có lẽ bạn đang tự hỏi làm thế nào để diễn giải tất cả văn bản đó, ý tôi là tại sao có hai thông tin dưới phần cú pháp và tại sao có quá nhiều dấu ngoặc ở khắp mọi nơi? Điều đầu tiên trước tiên: lý do có hai khối thông tin trong phần cú pháp là vì chúng đại diện cho các cách khác nhau để chạy lệnh. Đây được gọi là các bộ tham số về mặt kỹ thuật và bạn chỉ có thể sử dụng từng bộ một (bạn không thể trộn các tham số từ các bộ khác nhau). Trong ảnh chụp màn hình ở trên, bạn có thể thấy rằng bộ tham số trên cùng có tham số SourcePath trong khi phía dưới không. Lý do là bạn sẽ sử dụng bộ tham số hàng đầu (bao gồm SourcePath) nếu bạn đang cập nhật các tệp trợ giúp từ một máy khác trên mạng đã tải xuống chúng, trong khi bạn không cần chỉ định đường dẫn nguồn nếu bạn chỉ muốn lấy các tập tin mới nhất từ Microsoft.
Để trả lời câu hỏi thứ hai, có một cú pháp nhất định giúp các tệp theo dõi và đây là:
- Dấu ngoặc vuông xung quanh một tên tham số và loại của nó có nghĩa là nó là một tham số tùy chọn và lệnh sẽ hoạt động tốt nếu không có nó.
- Dấu ngoặc vuông quanh tên tham số có nghĩa là tham số là tham số vị trí.
- Điều ở bên phải của một tham số trong dấu ngoặc nhọn cho bạn biết kiểu dữ liệu mà tham số đang mong đợi.
Mặc dù bạn nên học cách đọc cú pháp tệp trợ giúp, nhưng nếu bạn không chắc chắn về một tham số cụ thể, hãy thêm vào phần cuối của lệnh get help và cuộn xuống phần tham số, nơi nó sẽ cho bạn biết thêm một chút về từng tham số tham số.
Nhận trợ giúp -Tên cập nhật-Trợ giúp -Full
Điều cuối cùng bạn cần biết về hệ thống trợ giúp là cách bạn có thể sử dụng nó để khám phá các lệnh, điều này thực sự rất dễ dàng. Bạn thấy đấy, PowerShell chấp nhận các ký tự đại diện ở hầu hết mọi nơi, vì vậy sử dụng chúng cùng với lệnh Get-Help cho phép bạn dễ dàng khám phá các lệnh. Ví dụ: tôi đang tìm kiếm các lệnh liên quan đến Windows Services:
Nhận trợ giúp-Tên * dịch vụ *
Chắc chắn, tất cả các thông tin này có thể không hữu ích của dơi, nhưng hãy tin tôi, dành thời gian và tìm hiểu cách sử dụng hệ thống trợ giúp. Nó luôn có ích, ngay cả với những người viết kịch bản tiên tiến, những người đã làm việc này trong nhiều năm.
Bảo vệ
Đây sẽ không phải là một giới thiệu thích hợp mà không đề cập đến bảo mật. Mối lo ngại lớn nhất đối với nhóm PowerShell là PowerShell trở thành điểm tấn công mới nhất và lớn nhất đối với các kiddies script. Họ đã áp dụng một số biện pháp bảo mật để đảm bảo rằng điều này không xảy ra, vì vậy hãy xem xét chúng.
Hình thức bảo vệ cơ bản nhất xuất phát từ thực tế là phần mở rộng tệp PS1 (phần mở rộng được sử dụng để biểu thị tập lệnh PowerShell) không được đăng ký với máy chủ PowerShell, thực tế nó đã được đăng ký với Notepad. Điều đó có nghĩa là nếu bạn nhấp đúp chuột vào một tệp, nó sẽ mở bằng notepad thay vì chạy.
Thứ hai, bạn không thể chạy các tập lệnh từ trình bao bằng cách chỉ cần nhập tên của tập lệnh, bạn phải chỉ định đường dẫn đầy đủ đến tập lệnh. Vì vậy, nếu bạn muốn chạy một tập lệnh trên ổ C, bạn sẽ phải gõ:
C: \ runme.ps1
Hoặc nếu bạn đã ở gốc của ổ C, bạn có thể sử dụng như sau:
.\ runme.ps1
Cuối cùng, PowerShell có một thứ gọi là Chính sách thực thi, ngăn bạn không chạy bất kỳ tập lệnh cũ nào. Thực tế, theo mặc định, bạn không thể chạy bất kỳ tập lệnh nào và cần thay đổi chính sách thực thi nếu bạn muốn được phép chạy chúng. Có 4 Chính sách thực thi đáng chú ý:
- Hạn chế: Đây là cấu hình mặc định trong PowerShell. Cài đặt này có nghĩa là không có tập lệnh nào có thể chạy, bất kể chữ ký của nó. Điều duy nhất có thể chạy trong PowerShell với cài đặt này là một lệnh riêng lẻ.
- Tất cả đã ký: Cài đặt này không cho phép các tập lệnh chạy trong PowerShell. Kịch bản phải có chữ ký số liên quan từ nhà xuất bản đáng tin cậy. Sẽ có một lời nhắc trước khi bạn chạy các tập lệnh từ các nhà xuất bản đáng tin cậy.
- RemoteSign: Cài đặt này cho phép các tập lệnh được chạy, nhưng yêu cầu các tập lệnh và tập tin cấu hình được tải xuống từ Internet phải có chữ ký số được liên kết từ nhà xuất bản đáng tin cậy. Các tập lệnh chạy từ máy tính cục bộ không cần phải được ký. Không có lời nhắc trước khi chạy tập lệnh.
- Không giới hạn: Điều này cho phép các tập lệnh không dấu chạy, bao gồm tất cả các tập lệnh và tập tin cấu hình được tải xuống từ Internet. Điều này sẽ bao gồm các tệp từ Outlook và Messenger. Rủi ro ở đây là chạy các kịch bản mà không có bất kỳ chữ ký hoặc bảo mật. Chúng tôi khuyên bạn không bao giờ sử dụng cài đặt này.
Để xem Chính sách thực thi hiện tại của bạn được đặt thành gì, hãy mở Bảng điều khiển PowerShell và nhập:
Get-ExecutPolicy
Đối với khóa học này và hầu hết các trường hợp khác, Chính sách từ xa là tốt nhất, vì vậy hãy tiếp tục và thay đổi chính sách của bạn bằng cách sử dụng như sau.
Lưu ý: Điều này sẽ cần được thực hiện từ Bảng điều khiển PowerShell nâng cao.
Set-ExecutPolicy RemoteSign
Đó là tất cả cho lần này mọi người, hẹn gặp lại vào ngày mai để có thêm niềm vui PowerShell.
Tuyên bố từ chối trách nhiệm: Thuật ngữ thích hợp cho lệnh PowerShell là một lệnh ghép ngắn và từ giờ chúng ta sẽ sử dụng thuật ngữ chính xác này. Nó chỉ cảm thấy thích hợp hơn để gọi chúng là lệnh cho phần giới thiệu này.
Nếu bạn có bất kỳ câu hỏi nào, bạn có thể tweet cho tôi @taybgibb hoặc chỉ để lại nhận xét.