コンテンツへスキップ

PowerShellの基本:ループを使用したプログラミング

    1651882981

    このPowerShellチュートリアルでは、Forループ、ForEach-Objectループ、およびWhile、Do-While、Do-Untilループの使用方法を示します。

    PowerShellループは、最も基本的には、同じコマンドのセットを設定された回数繰り返すだけです。ループは、設定された期間または特定の数のレコードに対して一貫したアクションを実行するのに理想的であり、スクリプトを大幅に簡素化できます。特にPowerShellは、多数の同様のデータを含むオブジェクトを返す多数のコマンドレット(特に、動詞Getで始まるコマンドレット)を備えています。

    PowerShellで使用できるループにはいくつかの種類があり、多くの場合、複数のループ手法を効果的に使用できます。パフォーマンスまたはコードの可読性の観点から、最も効率的なループタイプを決定する必要がある場合があります。

    ForEach-オブジェクトループ

    多くの場合、ForEach-Objectコマンドレット(PowerShellオブジェクトの操作に関する記事で以前に説明した)を使用することが、オブジェクトをループするための最良の方法です。最も簡単な方法では、ForEach-Objectは、ループするオブジェクトと、オブジェクトの各メンバーで実行されるコマンドを含むスクリプトブロックのみを必要とします。

    これらのパラメーターは、-InputObjectおよび-Processパラメーター名によって指定するか、オブジェクトをForEach-Objectコマンドレットにパイプ処理してスクリプトブロックを最初のパラメーターとして配置することによって指定できます。この基本的な構文を説明するために、次の例は、ForEach-Objectを使用してユーザーのDocumentsフォルダーのコンテンツをループする2つの方法を示しています。

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

    特定のシナリオでは、ループが実行される直前または直後に1つ以上のアクションを実行することが有益な場合があります。-Beginパラメーターと-Endパラメーターを使用して、-Processスクリプトブロックの内容の直前または直後に実行するスクリプトブロックを定義できます。これは、ループの実行前または実行後に変数を設定または変更するために使用できます。

    ForEach-Objectには、ForEachと%の2つのエイリアスがあり、PowerShell3.0以降の短縮構文もサポートしています。次の3つの例は、機能が同じです。

    Get-WMIObject Win32_LogicalDisk | ForEach-Object{$_。FreeSpace}Get-WMIObjectWin32_LogicalDisk | ForEach{$_。FreeSpace}Get-WMIObjectWin32_LogicalDisk | % フリースペース

    PowerShell For Loop

    forループは通常、配列またはオブジェクトをステップスルーするため、または必要に応じて同じコードブロックを繰り返すために、指定された回数だけコマンドのセットを反復処理するために使用されます。Forループは、ループに入るときの変数の値、ループを終了する条件、およびループを通過するたびにその変数に対して実行されるアクションを設定することによって構築されます。

    次の例は、掛け算の九九を作成するために使用される基本的なForループを示しています。

    For($ i = 0; $ i -le 10; $ i ++){“10 * $ i =” +(10 * $ i)}

    forループを使用して、初期値を配列の初期インデックスに設定し、配列の長さが満たされるまで値を段階的に増やすことで、配列値をステップスルーできます。配列インデックスは、次の例に示すように、増分された変数を変数名の直後の角かっこ内に配置することで指定されます。

    $ songs = @( “Red”、 “Orange”、 “Yellow”、 “Green”、 “Blue”、 “Indigo”、 “Violet”)For($ i = 0; $ i -lt $colors.Length; $ i ++){$colors [$i]}

    While、Do-While、およびDo-Untilループ

    PowerShellがサポートする3番目のタイプのループには、条件が真である限り、または条件が満たされるまでループを処理できるようにする条件を設定することが含まれます。WhileループとDo-Whileループはどちらも、条件が$ trueと評価されている間にアクションを実行するために使用され、構文のみが異なります。Do-Untilループの構文はDo-Whileと似ていますが、条件ステートメントが満たされると処理を停止します。

    Do-WhileループとDo-Untilループはどちらも、スクリプトブロックの前にあるDoキーワードで始まり、その後に条件キーワード(WhileまたはUntil)と条件が続きます。例として、次の2つのループは同じように機能し、条件のみが逆になります。

    $ i = 1 Do {$ i $ i ++} While($ i -le 10)$ i = 1 Do {$ i $ i ++} until($ i -gt 10)

    whileループはDo-Whileループと同じように機能しますが、構文のみがわずかに変更されています。Whileループは、Whileキーワード、条件、最後にスクリプトブロックのみを使用します。このループは、機能が前の例と同じであり、Do-Whileループと同じ条件を使用します。

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

    これらの3つのループタイプ(Do-While、Do-Until、およびWhileループ)のいずれも、無期限にループするために使用できます。WhileおよびDo-Whileは、条件が$ trueに設定された状態でループし、Do-Untilは、条件が$falseに設定された状態でループします。

    状況によっては、ループ条件以外の条件に基づいて、ループを早期に終了する必要がある場合があります。この場合、ループを終了するためにBreakキーワードを呼び出すことができます。この最後の例は同じ機能を示していますが、無限ループとBreakキーワードを使用して、適切なタイミングで終了します。

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

    関連している:

    PowerShell比較演算子と条件付きロジック
    PowerShell:変数、配列、ハッシュテーブルの使用
    PowerShellの基本:ファイルとフォルダーの管理

    0 0 votes
    Rating post
    Subscribe
    Notify of
    guest
    0 comments
    Inline Feedbacks
    View all comments
    0
    Would love your thoughts, please comment.x
    ()
    x