Geek School: Tìm hiểu cách tự động hóa Windows với PowerShell

Mục lục:

Geek School: Tìm hiểu cách tự động hóa Windows với PowerShell
Geek School: Tìm hiểu cách tự động hóa Windows với PowerShell

Video: Geek School: Tìm hiểu cách tự động hóa Windows với PowerShell

Video: Geek School: Tìm hiểu cách tự động hóa Windows với PowerShell
Video: iOS 17 vừa ra có gì mới: Chạm iPhone là chuyển được file, tạm biệt iPhone X - YouTube 2024, Có thể
Anonim
Trong ấn bản này của Geek School, chúng tôi sẽ giúp bạn hiểu được ngôn ngữ kịch bản PowerShell mạnh mẽ được xây dựng ngay trong Windows và cực kỳ hữu ích trong môi trường CNTT.
Trong ấn bản này của Geek School, chúng tôi sẽ giúp bạn hiểu được ngôn ngữ kịch bản PowerShell mạnh mẽ được xây dựng ngay trong Windows và cực kỳ hữu ích trong môi trường CNTT.

Trong khi loạt bài này không có cấu trúc xung quanh bài kiểm tra, việc 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 bạn muốn tìm hiểu về sự nghiệp CNTT của mình thì đây chính là nó. 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ũng như cả ngôn ngữ trình bao và ngôn ngữ kịch bản.

Xin lưu ý rằng loạt bài này dựa trên PowerShell 3, được phát hành với Windows 8 và Server 2012. Nếu bạn đang chạy Windows 7, hãy 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 ngoài hộp, Bảng điều khiển và Môi trường kịch bản tích hợp - còn được gọi là ISE. ISE đã được cải thiện rất nhiều từ phiên bản ghê gớm đi kèm với PowerShell 2 và có thể được mở bằng cách nhấn tổ hợp phím Win + R để đưa ra một hộp chạy, sau đó gõ powershell_ise và nhấn Enter.

Như bạn có thể thấy ISE thể thao một cái nhìn phân chia để bạn có thể nhanh chóng kịch bản trong khi vẫn có thể nhìn thấy kết quả trong nửa dưới của ISE. Nửa dưới của ISE, nơi các kết quả của tập lệnh đượ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. Các v3 ISE cuối cùng đã thêm hỗ trợ cho intellisense trong cả hai kịch bản cửa sổ cũng như giao diện điều khiển tương tác.
Như bạn có thể thấy ISE thể thao một cái nhìn phân chia để bạn có thể nhanh chóng kịch bản trong khi vẫn có thể nhìn thấy kết quả trong nửa dưới của ISE. Nửa dưới của ISE, nơi các kết quả của tập lệnh đượ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. Các v3 ISE cuối cùng đã thêm hỗ trợ cho intellisense trong cả hai kịch bản cửa sổ cũng như giao diện điều khiển tương tác.
Image
Image
Ngoài ra, bạn có thể tương tác với PowerShell bằng cách sử dụng Bảng điều khiển PowerShell, đó là những gì tôi sẽ sử dụng cho hầu hết các 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 các lệnh và nó rút ra kết quả. Để mở Bảng điều khiển Windows PowerShell, một lần nữa nhấn tổ hợp phím Win + R để mở một hộp chạy và gõ PowerShell rồi nhấn enter.
Ngoài ra, bạn có thể tương tác với PowerShell bằng cách sử dụng Bảng điều khiển PowerShell, đó là những gì tôi sẽ sử dụng cho hầu hết các 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 các lệnh và nó rút ra kết quả. Để mở Bảng điều khiển Windows PowerShell, một lần nữa nhấn tổ hợp phím Win + R để mở một hộp chạy và gõ PowerShell rồi nhấn enter.
REPL nhắc 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ù Console không cung cấp tính năng intelliSense, nhưng nó cung cấp một cái gì đó gọi là hoàn thành tab có chức năng giống nhau - chỉ cần bắt đầu nhập lệnh và nhấn tab để quay qua các kết quả phù hợp.
REPL nhắc 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ù Console không cung cấp tính năng intelliSense, nhưng nó cung cấp một cái gì đó gọi là hoàn thành tab có chức năng giống nhau - chỉ cần bắt đầu nhập lệnh và nhấn tab để quay qua các kết quả phù hợp.
Image
Image
Image
Image

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 với một vấn đề đáng kể. Khi nhóm trợ giúp PowerShell phải ngừng làm việc trên các tệp trợ giúp, các nhà phát triển PowerShell vẫn 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 được gửi, 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 đi kèm với không có tập tin trợ giúp ra khỏi hộp và bao gồm một hệ thống trợ giúp 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 sẽ muốn tải về các tập tin trợ giúp mới nhất. Bạn có thể làm điều đó bằng cách mở một Bảng điều khiển PowerShell và chạy:

Update-Help

Image
Image
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 là chỉ cần 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 một lệnh, bạn chỉ cần chuyển tên của lệnh mà bạn muốn trợ giúp với tham số Name của lệnh Get-Help, ví dụ:
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 là chỉ cần 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 một lệnh, bạn chỉ cần chuyển tên của lệnh mà bạn muốn trợ giúp với tham số Name của lệnh Get-Help, ví dụ:

Get-Help –Name Update-Help

Bạn có thể tự hỏi làm thế nào để giải thích tất cả các văn bản anyway, tôi có nghĩa là tại sao có hai rất nhiều thông tin theo phần cú pháp và tại sao có rất nhiều dấu ngoặc khắp nơi? Điều đầu tiên đầu 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 là những bộ tham số được gọi là thông số kỹ thuật và bạn chỉ có thể sử dụng một bộ tại một thời điểm (bạn không thể kết hợp các thông 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 tập tham số trên cùng có thông số SourcePath trong khi phía dưới không có. Lý do là bạn sẽ sử dụng tập hợp thông số hàng đầu (một trong đó bao gồm SourcePath) nếu bạn đang cập nhật tệp trợ giúp của mình từ một máy khác trên mạng của bạn đã tải chúng xuố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.
Bạn có thể tự hỏi làm thế nào để giải thích tất cả các văn bản anyway, tôi có nghĩa là tại sao có hai rất nhiều thông tin theo phần cú pháp và tại sao có rất nhiều dấu ngoặc khắp nơi? Điều đầu tiên đầu 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 là những bộ tham số được gọi là thông số kỹ thuật và bạn chỉ có thể sử dụng một bộ tại một thời điểm (bạn không thể kết hợp các thông 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 tập tham số trên cùng có thông số SourcePath trong khi phía dưới không có. Lý do là bạn sẽ sử dụng tập hợp thông số hàng đầu (một trong đó bao gồm SourcePath) nếu bạn đang cập nhật tệp trợ giúp của mình từ một máy khác trên mạng của bạn đã tải chúng xuố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 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 mà 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 các dấu ngoặc nhọn cho bạn biết kiểu dữ liệu mà tham số đang mong đợi.

Trong khi bạn nên tìm hiểu để đọc cú pháp tệp trợ giúp, nếu bạn không chắc chắn về một tham số cụ thể chỉ cần nối thêm –Toàn toàn đến cuối lệnh get help của bạn 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ố.

Get-Help –Name Update-Help –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 việc 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 các lệnh đối phó với Windows Services:
Đ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 việc 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 các lệnh đối phó với Windows Services:

Get-Help –Name *service*

Chắc chắn, tất cả thông tin này có thể không tiện dụng cho dơi, nhưng hãy tin tôi đi, dành thời gian và học cách sử dụng hệ thống trợ giúp. Nó có ích trong mọi lúc, ngay cả với những người viết kịch bản cao cấp, những người đã làm điều này trong nhiều năm.
Chắc chắn, tất cả thông tin này có thể không tiện dụng cho dơi, nhưng hãy tin tôi đi, dành thời gian và học cách sử dụng hệ thống trợ giúp. Nó có ích trong mọi lúc, ngay cả với những người viết kịch bản cao cấp, những người đã làm điều này trong nhiều năm.

Bảo vệ

Đây không phải là phần giới thiệu thích hợp mà không đề cập đến vấn đề bảo mật. Nỗi lo 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 kịch bản lệnh. Họ đã đặt một vài biện pháp an ninh để đảm bảo rằng điều này không xảy ra, vì vậy, hãy xem 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, nó thực sự được đăng ký với Notepad. Điều đó có nghĩa là nếu bạn nhấp đúp 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 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 đủ cho tập lệnh. Vì vậy, nếu bạn muốn chạy một kịch bản trên ổ đĩa C của bạn, bạn sẽ phải gõ:

C:

unme.ps1

Hoặc nếu bạn đã ở gốc của ổ đĩa C, bạn có thể sử dụng như sau:

unme.ps1

Cuối cùng, PowerShell có một cái gì đó gọi là Execution Policies, nó ngăn bạn khỏi việc chạy bất kỳ kịch bản 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 của mình nếu bạn muốn được phép chạy chúng. Có 4 chính sách thực hiện đáng chú ý:

  • Bị giới hạn: Đâ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ẻ.
  • AllSigned: Cài đặt này cho phép các tập lệnh chạy trong PowerShell. Tập lệnh phải có chữ ký số được liên kết từ nhà xuất bản đáng tin cậy. Sẽ có lời nhắc trước khi bạn chạy tập lệnh từ nhà xuất bản đáng tin cậy.
  • RemoteSigned: Cài đặt này cho phép các tập lệnh được chạy, nhưng yêu cầu tập lệnh cấu hình và tập lệnh được tải xuống từ Internet 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 nào trước khi chạy tập lệnh.
  • Không hạn chế: Điều này cho phép các tập lệnh chưa được ký chạy, bao gồm tất cả các tập lệnh và tệp 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. Nguy cơ ở đây là chạy tập lệnh mà không có bất kỳ chữ ký hoặc bảo mật nào. Chúng tôi đã đề xuất rằng bạn không bao giờ sử dụng cài đặt này.

Để xem Chính sách thực hiện hiện tại của bạn được đặt là gì, hãy mở một Bảng điều khiển PowerShell và gõ:

Get-ExecutionPolicy

Đố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 các bước sau.
Đố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 các bước sau.

Lưu ý: Điều này sẽ cần phải được thực hiện từ Bảng điều khiển PowerShell nâng cao.

Set-ExecutionPolicy RemoteSigned

Đó là tất cả cho những người này, hẹn gặp lại vào ngày mai để có thêm một số thú vui khác của PowerShell.
Đó là tất cả cho những người này, hẹn gặp lại vào ngày mai để có thêm một số thú vui khác của PowerShell.

Disclaimer: Thuật ngữ thích hợp cho lệnh PowerShell là một lệnh ghép ngắn, và từ giờ trở đi 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 khi 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 tôi @taybgibb hoặc chỉ để lại nhận xét.

Đề xuất: