「PowerShell」のループ処理構文を覚えれば、反復実行するタスクの自動化に役立つ。主要な構文のうち「while」「do while」の概要と、これらの違いを整理しよう。
本連載は、「Windows」のコマンド実行ツール「PowerShell」で利用できるループ処理の構文のうち、4種類の主要な構文を紹介する。後編は残る2種類を取り上げる。
「while」は、条件式の評価が「true」(真)である間、スクリプト(簡易プログラム)内のあるブロック(まとまり)を実行する。例えばID・アクセス管理サービス「Azure Active Directory」で管理するユーザーアカウントに対して、メールサービス「Exchange Online」のメールボックスの利用権限を付与するスクリプトがあるとする。メールボックスの作成が終わるまで、実行を待機する必要がある場合、このスクリプトは次のように記述できる。
$upn = 'testuser@domain.com' while (-not ($mbx = Get-EXOMailbox $upn -ErrorAction SilentlyContinue)) { Start-Sleep -Seconds 60 } # 以降に$mbxで実行する処理を記述する
※注:システムによっては正常に実行できない場合があります。
「$upn」で指定したアカウントのメールボックスが存在しなければ、「$mbx」はエラー値を示す。このとき条件式の結果を反転させる「-not」パラメータによって、条件式の評価はtrueとなり、ループは続行する。
whileの注意点は、PowerShellがループ内のブロックを実行する前に、条件式を評価することだ。falseだと評価すると、ループ内のブロックを実行しない。
「do while」はwhileと似ているが、ループ内のコマンドを少なくとも1回は確実に実行する点で異なる。実行後にPowerShellはwhile内の条件式を評価し、doループを終了するかどうかを判断する。
前出のwhileと同じ例は、次のように書き換えることができる。
$upn = 'testuser@domain.com' do { Start-Sleep -Seconds 60 } while (-not ($mbx = Get-EXOMailbox $upn -ErrorAction SilentlyContinue)) # 以降に$mbxで実行する処理を記述する
※注:システムによっては正常に実行できない場合があります。
このスクリプトは、whileで紹介したスクリプト例と同じ結果になる。つまりメールボックスの作成が終わってから、次の処理に移る。ただしメールボックスが存在するかどうかを初めて確認する前にも60秒間ストップする。
米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。
Copyright © ITmedia, Inc. All Rights Reserved.
お知らせ
米国TechTarget Inc.とInforma Techデジタル事業が業務提携したことが発表されました。TechTargetジャパンは従来どおり、アイティメディア(株)が運営を継続します。これからも日本企業のIT選定に役立つ情報を提供してまいります。
世界のモバイルアプリ市場はこう変わる 2025年における5つの予測
生成AIをはじめとする技術革新やプライバシー保護の潮流はモバイルアプリ市場に大きな変...
営業との連携、マーケティング職の64.6%が「課題あり」と回答 何が不満なのか?
ワンマーケティングがB2B企業の営業およびマーケティング職のビジネスパーソン500人を対...
D2C事業の約7割が失敗する理由 成功企業との差はどこに?
クニエがD2C事業の従事者を対象に実施した調査の結果によると、D2C事業が成功した企業は...