Chuyển tới nội dung

Kiến thức cơ bản về PowerShell: Lập trình với vòng lặp

    1651882981

    Trong hướng dẫn PowerShell này, chúng tôi chỉ cho bạn cách sử dụng vòng lặp For, ForEach-Object và các vòng lặp While, Do-While và Do-Until.

    Các vòng lặp PowerShell, ở mức cơ bản nhất, chỉ cần lặp lại cùng một bộ lệnh với số lần nhất định. Lý tưởng để thực hiện các hành động nhất quán trong một khoảng thời gian nhất định hoặc một số bản ghi nhất định, các vòng lặp có thể đơn giản hóa các tập lệnh của bạn một cách đáng kể. PowerShell đặc biệt có một số lệnh ghép ngắn – đặc biệt là những lệnh bắt đầu bằng động từ Get – trả về các đối tượng chứa số lượng lớn dữ liệu tương tự.

    Có một số loại vòng lặp có sẵn trong PowerShell và trong nhiều trường hợp, nhiều kỹ thuật lặp có thể được sử dụng hiệu quả. Đôi khi, việc xác định loại vòng lặp hiệu quả nhất là bắt buộc, từ góc độ hiệu suất hoặc khả năng đọc mã.

    ForEach-Object Loop

    Trong nhiều trường hợp, sử dụng lệnh ghép ngắn ForEach-Object (đã thảo luận trước đây trong bài viết của chúng tôi về cách làm việc với các đối tượng PowerShell) là cách tốt nhất để lặp qua một đối tượng. Đơn giản nhất, ForEach-Object chỉ yêu cầu một đối tượng được lặp qua và một khối script chứa các lệnh được thực hiện trên mỗi thành viên của đối tượng.

    Các tham số này có thể được chỉ định bằng tên tham số -InputObject và -Process hoặc bằng cách chuyển đối tượng tới lệnh ghép ngắn ForEach-Object và đặt khối script làm tham số đầu tiên. Để minh họa cú pháp cơ bản này, ví dụ sau cho thấy hai phương pháp sử dụng ForEach-Object để lặp qua nội dung của thư mục Documents của người dùng:

    $ myDocuments = Get-ChildItem $ env: USERPROFILEDocuments -File $ myDocuments | ForEach-Object {$ _. FullName} ForEach-Object -InputObject $ myDocuments -Process {$ _. FullName}

    Trong một số trường hợp nhất định, có thể có lợi khi thực hiện một hoặc nhiều hành động ngay trước hoặc ngay sau khi vòng lặp được thực hiện. Các tham số -Begin và -End có thể được sử dụng để xác định các khối script để thực thi ngay trước hoặc sau nội dung của khối script -Process. Điều này có thể được sử dụng để thiết lập hoặc sửa đổi một biến trước hoặc sau khi thực hiện vòng lặp.

    ForEach-Object có hai bí danh, ForEach và%, và cũng hỗ trợ cú pháp viết tắt bắt đầu trong PowerShell 3.0. Ba ví dụ sau đây giống hệt nhau về chức năng.

    Get-WMIObject Win32_LogicalDisk | ForEach-Object {$ _. FreeSpace} Get-WMIObject Win32_LogicalDisk | ForEach {$ _. FreeSpace} Get-WMIObject Win32_LogicalDisk | % Không gian trông

    PowerShell cho vòng lặp

    Vòng lặp for thường được sử dụng để lặp qua một tập hợp lệnh với số lần xác định, hoặc để từng bước qua một mảng hoặc đối tượng hoặc chỉ để lặp lại cùng một khối mã khi cần thiết. Vòng lặp For được xây dựng bằng cách đặt giá trị của một biến khi vào vòng lặp, điều kiện kết thúc vòng lặp và một hành động được thực hiện đối với biến đó mỗi lần qua vòng lặp.

    Ví dụ sau đây cho thấy một vòng lặp For cơ bản được sử dụng để tạo một bảng cửu chương:

    Đối với ($ i = 0; $ i -le 10; $ i ++) {“10 * $ i =” + (10 * $ i)}

    Vòng lặp for có thể được sử dụng để chuyển qua các giá trị mảng bằng cách đặt giá trị ban đầu thành chỉ số ban đầu của mảng và tăng dần giá trị cho đến khi đáp ứng độ dài mảng. Chỉ số mảng được chỉ định bằng cách đặt biến tăng dần bên trong dấu ngoặc vuông ngay sau tên biến, như thể hiện trong ví dụ sau:

    $ color = @ (“Red”, “Orange”, “Yellow”, “Green”, “Blue”, “Indigo”, “Violet”) Cho ($ i = 0; $ i -lt $ Colors.Length; $ i ++) {$ color [$ i]}

    Vòng lặp While, Do-While và Do-Until

    Loại vòng lặp thứ ba mà PowerShell hỗ trợ liên quan đến việc thiết lập một điều kiện cho phép vòng lặp xử lý miễn là điều kiện đúng hoặc cho đến khi nó được đáp ứng. Vòng lặp While và Do-While đều được sử dụng để thực hiện một hành động trong khi điều kiện đánh giá là $ true và chỉ khác nhau về cú pháp của chúng. Các vòng lặp Do-Until có cú pháp tương tự như Do-While, nhưng dừng xử lý khi câu lệnh điều kiện được đáp ứng.

    Các vòng lặp Do-While và Do-Until đều bắt đầu với từ khóa Do bắt đầu một khối script, theo sau là từ khóa điều kiện (While hoặc Until) và điều kiện. Như một ví dụ, hai vòng lặp sau hoạt động giống hệt nhau, chỉ điều kiện được đảo ngược:

    $ i = 1 Do {$ i $ i ++} Trong khi ($ i -le 10) $ i = 1 Do {$ i $ i ++} Cho đến ($ i -gt 10)

    Trong khi các vòng lặp hoạt động giống hệt với các vòng lặp Do-While, chỉ có điều cú pháp được thay đổi một chút. Vòng lặp While chỉ sử dụng từ khóa While, theo sau là điều kiện và cuối cùng là khối tập lệnh. Vòng lặp này có chức năng giống hệt với các ví dụ trước và sử dụng cùng điều kiện với vòng lặp Do-While:

    $ i = 1 Trong khi ($ i -le 10) {$ i $ i ++}

    Bất kỳ loại vòng lặp nào trong số ba loại vòng lặp này – vòng lặp Do-While, Do-Until và While – cũng có thể được sử dụng để lặp vô thời hạn; Vòng lặp While và Do-While với điều kiện được đặt thành $ true và Do-Until với điều kiện được đặt thành $ false.

    Trong một số tình huống, bạn có thể cần phải thoát khỏi vòng lặp sớm dựa trên điều gì đó khác với điều kiện của vòng lặp. Trong trường hợp này, từ khóa Break có thể được gọi để thoát ra khỏi vòng lặp. Ví dụ cuối cùng này cho thấy cùng một chức năng, nhưng sử dụng vòng lặp vô hạn và từ khóa Break để thoát ra vào thời điểm thích hợp:

    $ i = 1 Trong khi ($ true) {$ i $ i ++ if ($ i -gt 10) {Break}}

    CÓ LIÊN QUAN:

    Toán tử so sánh PowerShell và Logic có điều kiện
    PowerShell: Sử dụng biến, mảng và bảng băm
    Kiến thức cơ bản về PowerShell: Quản lý tệp và thư mục

    0 0 đánh giá
    Rating post
    Theo dõi
    Thông báo của
    guest
    0 comments
    Phản hồi nội tuyến
    Xem tất cả bình luận
    0
    Rất thích suy nghĩ của bạn, hãy bình luận.x