検索
特集

PowerShellの基本(前編)Windows PowerShellコマンド&スクリプティング入門(1/5 ページ)

対話型シェルとスクリプティング実行環境とを完全に統合した、次世代Windowsシェル、PowerShellを管理者として活用するための第一歩。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
Windows PowerShellコマンド&スクリプティング入門
Windows Server Insider

 

「Windows PowerShellコマンド&スクリプティング入門」のインデックス

連載目次

 Windowsというプラットフォームの第一の特徴は、何をおいても、その充実したGUIだろう。グラフィカルなユーザー・インターフェイスを介することで、ユーザーは複雑なコマンドなどを習得することなく、直感的にツールを利用することができる。比較的知識の浅いシステム管理者でも、それなりにWindows OSを管理できてしまうのは、まさにこのこなれたGUIの存在ゆえであるといってもよいだろう。

 もっとも、GUI環境がもたらすのはメリットばかりではない。というのも、日常的に行われるルーチンワークを行うに際しては、往々にして煩雑な作業を強いられるためだ。

 例えば、

「特定のフォルダの中から半年以上更新されていないファイルを探し出して、該当するファイルを削除する」

という作業例を考える。GUI上でこのような操作を行おうとしたら、まずエクスプローラを開いて、ファイルの最終更新日時を確認し、半年以上前のものをゴミ箱にドラッグ&ドロップして……、という作業を繰り返す必要がある。これが単階層のフォルダであればまだよいだろう。だがフォルダの配下が多階層になっているとしたら、これをフォルダの数、ファイルの数だけ延々と繰り返す必要がある。もう少し慣れたユーザーなら、検索ダイアログ・ボックスを使って古いファイルを探し出し、まとめて削除することもできるだろう。

 これはほんの一例にすぎないが、そのようなたぐいの作業が日常的に転がっているのが、システム管理者の世界でもある。そして、このような作業にGUIが不向きであるのはお分かりいただけるであろう。GUIとは、あくまで人間とコンピュータとがインタラクティヴに対話するような局面で威力を発揮するインターフェイスだからだ。

管理作業を大幅に効率化するスクリプティング環境

 そこで登場するのが、スクリプティング実行環境だ。一連のルーチンワークをスクリプトとして記述しておけば、あとはこれを起動するだけでよい。最初にスクリプトを記述する手間さえ惜しまなければ、あとはすべての作業を自動化できてしまう。

 Windows環境において、このようなスクリプティング環境としてまず思いつくのが、コマンド・プロンプト上で実行可能なバッチ・ファイルだろう。コマンド・プロンプトは、いうまでもなく、Windows環境において長らく親しまれてきたシェル環境だ。もっとも、コマンド・プロンプトの機能はお世辞にも高度といえるものではなかった。UNIXシェルに比べれば、利用できるコマンドははるかに少ないし、提供しているプログラミング機能も極めて限定的だ。もちろん、コマンド・プロンプトの機能不足を補うためにスクリプティング実行に特化したWSH(Windows Script Host。WSHについては連載「Windows管理者のためのWindows Script Host入門」参照)のような環境もあるにはあるが、対話型の処理はコマンド・プロンプトで、スクリプトの実行はWSHでという使い分けは、システム管理者の負担を増やす原因でもあった。

 これらの課題を解決するべく登場したのが「Windows PowerShell」(以降、単にPowerShellと表記)なのだ。PowerShellは、対話型シェルとスクリプティング実行環境とを完全に統合した次世代Windowsのシェル環境である。その特徴には、

  • 豊富に用意された高機能なコマンド(「コマンドレット」
  • 「.NET Frameworkクラス・ライブラリ」との連携
  • 「ドライバ」経由でさまざまなデータストアへのアクセスが可能

などが挙げられる(「赤字」部分は後で個別に詳説)。PowerShellを利用することで、冒頭の例で挙げたような作業も、わずかにこれだけのコードで実現できてしまう(参考情報:@IT−Windows Server Insider会議室)。

Get-ChildItem | Where-Object {$_.LastWriteTime -lt (Get-Date).AddMonths(-6)} | ForEach-Object {$_.Delete()}

 これは一例にすぎないが、PowerShellの威力を少しは予感できただろうか。内容を簡単に説明しておくと、Get-ChildItemでファイルの一覧を取得し、Where-Objectで古い日付のファイルだけを選択/抽出し、ForEach-Object/Deleteでそれらのファイルを削除している(詳細は後述)。

 本特集では、前後編の2回に分けて、このPowerShellの基本的な機能について紹介していく。上述したように、PowerShellの最終的な目標はスクリプト技術によるシステム運用の自動化であるが、前編の今回は、まずPowerShellの概念から理解していただくという意味で、先ほど挙げた特徴を中心に、PowerShellの対話型シェルを利用してみることにしたい。

Copyright© Digital Advantage Corp. All Rights Reserved.

       | 次のページへ
ページトップに戻る