「PowerShell」のループ処理に使える4つの構文【後編】
PowerShell「while」「do while」の根本的な違いとスクリプト例
「PowerShell」のループ処理構文を覚えれば、反復実行するタスクの自動化に役立つ。主要な構文のうち「while」「do while」の概要と、これらの違いを整理しよう。
本連載は、「Windows」のコマンド実行ツール「PowerShell」で利用できるループ処理の構文のうち、4種類の主要な構文を紹介する。後編は残る2種類を取り上げる。
3.while
「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だと評価すると、ループ内のブロックを実行しない。
併せて読みたいお薦め記事
連載:「PowerShell」のループ処理に使える4つの構文
PowerShellの使い方
4.do while
「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発 エンジニア虎の巻
米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。
Copyright © ITmedia, Inc. All Rights Reserved.
TechTarget発 エンジニア虎の巻
米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。
この記事の著者
関連記事
新着ホワイトペーパー PR
-
製品資料
[ゾーホージャパン株式会社] サイバー攻撃からネットワークを守る上で確実に押さえておきたいポイントとは? -
事例
[アルプス システム インテグレーション株式会社] 中小企業でも安心して活用できる「手ごろなSOCサービス」とは? -
製品資料
[株式会社シーイーシー] 脱VMwareに成功した企業は何をどう実践した? 事例に学ぶ戦略立案&実装のコツ -
製品資料
[株式会社オービックビジネスコンサルタント] ランサムウェア攻撃を“二重の防御構造”で防ぐ、クラウド型基幹システムの実力 -
製品資料
[株式会社オービックビジネスコンサルタント] 動画で知るランサムウェア被害企業のリアル、会計データが無事だった理由とは
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
鹿島建設のDXを阻む「10年前のAWS」 安全性と自由度を両立したモダナイズ
-
2
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
3
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
4
Microsoft激怒のゼロデイ脆弱性「無断公開」 パッチを待つのが危険な理由
-
5
「Excel管理」では限界――製造現場の改善が進まない“隠れた原因”
-
6
脱VMwareの前提が崩れる BroadcomのVDDK公開停止で確認すべき点
-
7
Windows Server 2025移行の“超難関”「Active Directory」問題解決ガイド
-
8
「Oracle Database」のサポート体系が変更 料金への影響は?
-
9
「結局使わなくなる」Microsoft 365 Copilotを半年で定着 キリンの3施策
-
10
積水化学が挑む「データ経営」の核心:SAP S/4HANA Cloud導入の狙いとは
ホワイトペーパーランキング PR
-
1
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
2
DX/AI投資の壁を突破、現代の最高財務責任者が直面する課題と克服のヒント
-
3
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
4
LLMが兵器化? 元FBI高官が鳴らす警鐘とセキュリティツール統合のポイント
-
5
システムの保守がモダン化を阻む? 「変えない判断」から脱却する方法とは
-
6
生成AIを開発に導入しても効果が見えない? 実証実験で分かった成果と課題
-
7
経産省DX指針から読み解く、受発注業務デジタル化ロードマップ
-
8
“あのファイル転送”で暗躍するノーウェアランサム
-
9
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
-
10
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー