2019年3月17日日曜日

PowerShellで、超簡単にコマンドを指定回数だけ繰り返し実行する方法

PowerShellは、肩ひじ張ったプログラミングではなく、気軽に手軽に対話式でコマンドを実行出来るのも良い点の一つなんです。

それで、たとえば5回とか10回とか、コマンドを繰り返し実行したい!!なんて事も簡単に対話式でこなせてしまうのです。

ポイントは、配列とパイプラインです。


たとえば、CPUコマンド(これは自作)を、1秒間隔で5回連続で実行したい!!というような時は以下のように一発で書けます。



@(1..5) | %{ CPU; (START-SLEEP -m 5000); }

↑PowerShellは、プログラミング言語でいう所のJavaScriptに比肩するくらい自由度の高いシェルスクリプトで、その秘訣は「結果が常にテキストじゃなくてオブジェクトで出力される事」にあります。

最初に@(1..5)で、1から5までの配列を作ります。

この1から5というのが味噌で、配列の要素数=繰り返しの回数を意味します。

5個の要素を持った配列を、PowerShellの味噌であるパイプラインでチェーンし、次のチェーンでその配列を繰り返すコードブロックを設けるわけです。

そのコードブロックの中にコマンドを書きさえすれば、あとは自動的に回数分が繰り返されるという寸法です。

ちなみに、(START-SLEEP -m 5000)は、5秒間次のコマンドの実行をしないで待つ!というコマンドです。

このウェイトを入れないと、猛烈な速度で次々にコマンドを実行します。

PowerShellは、プログラミングではなく、コンピューターとの対話の中で配列を作って使えるのですが、この手法は覚えておいて損はないです。

必ず役に立つ時が来ます。

なお、この配列の発展形として、連想配列(ハッシュテーブル)というものがあり、こちらは単純な繰り返しだけでなく、キーとそれに対応した値を入れておけるので、さらに可能性が広がります。

プログラムの開発者は、ただものを作るだけではなく、突発的な緊急対応に対応できないといけないため、いざとなったら対話式だけでも深い事が可能になるPowerShellは本当に生命線となりうる必殺の決戦兵器です。

特に、Windows 7ユーザーと10ユーザーであれば、本当に何もせずとも100%全員の環境で使えるのは果てしも無くドドデカいものです。