【2/17】今年は「濃厚」技術トーク!@ITメールセミナー スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
   

[運用]
Windows PowerShellコマンド&スクリプティング入門(前編)

5.キーワード3「ドライブ」―データソースへのアクセスを一元化する

山田 祥寛
2007/08/30

 PowerShell関連のドキュメントやヘルプを読み進めていくと頻繁に登場するのが、この「ドライブ」というキーワードだ。ドライブとは、ファイル・システムにおけるドライブと同様、PowerShell上のコマンドレットからアクセス可能な「データの保管場所」のことである。ファイル・システムのドライブからフォルダやファイルにアクセスできるのと同様に、(例えば)レジストリドライブからはレジストリ項目に、環境変数ドライブからは環境変数に、それぞれアクセスできるというわけだ。

 デフォルトで、どのようなドライブが公開されているのかを確認するには、Get-PSDriveコマンドレットを使用する。

※PowerShellで利用可能なドライブを一覧表示させる

PS > Get-PSDrive

Name       Provider      Root
----       --------      ----
Alias      Alias
C          FileSystem    C:\
cert       Certificate   \
D          FileSystem    D:\
E          FileSystem    E:\
Env        Environment
Function   Function
HKCU       Registry      HKEY_CURRENT_USER
HKLM       Registry      HKEY_LOCAL_MACHINE
Variable   Variable
Z          FileSystem    Z:\

 このように、おなじみのファイル・システムのドライブ(C:ドライブやD:ドライブ)のほかに、Alias:ドライブ(エイリアス)、HKCU:ドライブ(レジストリのHKEY_CURRENT_USER)、Env:ドライブ(環境変数)など、さまざまなドライブが用意されていることが確認できる。なお、.NET Frameworkによるプログラミングの知識が必要になるため、本稿では割愛するが、これらドライブはユーザーが自前で追加することも可能だ。従って、例えばPowerShell上からデータベースにアクセスするようなドライブを追加することも可能だ。このための具体的なコードは以下のページでも紹介されている。難解ではあるが、興味のある方は一読をお勧めする。

 これらドライブを切り替えることで、1つのコマンドレットでさまざまなデータストアにアクセスできるのも、PowerShellの大きな特徴の1つだ。

 例えば、先ほどのGet-ChildItemコマンドレットも、デフォルトではカレント・ドライブがファイル・システムのドライブとなっているために、たまたまカレント・フォルダのファイル一覧を表示していたにすぎないわけで、ドライブを変更しさえすれば、レジストリや環境変数、エイリアスなどの情報にアクセスすることも可能だ。例えば、以下はGet-ChildItemコマンドレットで、現在定義されている環境変数を一覧表示する例だ。

※定義済みの環境変数を一覧表示する

PS C:\Documents and Settings\Yamada> Set-Location Env:
PS Env:\> Get-ChildItem

Name                   Value
----                   -----
Path                   C:\WINDOWS\system32;C:\WINDOWS;
C:\WINDOWS\system32\WBEM;C:\Program Files\Intel\DMIX;C...
TEMP                   C:\DOCUME~1\Yamada\LOCALS~1\Temp
SESSIONNAME            Console
PATHEXT                .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;
.WSF;.WSH;.PSC1
USERDOMAIN             DIMENSION5100C
PROCESSOR_ARCHITECTURE x86
SystemDrive            C:
TZ                     JST-9
……(以下省略)……

 Set-Locationは、従来のコマンド・プロンプトにおけるcdコマンドに相当するコマンドレットだ。つまり、ここではカレントのドライブを、デフォルトのCドライブからEnv(環境変数)ドライブに切り替えているというわけだ。実際、ここではプロンプトの表示を省略せずに掲載しているが、もともとの「PS C:\Documents and Settings\Yamada >」から「PS Env:\>」に変更されていることが確認できるだろう。あとは、Get-ChildItemコマンドを実行することで、カレント・ドライブ配下の情報として、ここでは環境変数名と対応する値の一覧を表示することができる。

 同様に、レジストリのHKEY_CURRENT_USER配下にアクセスしたいならば、まったく同じ要領で以下のように記述すればよい。

PS > Set-Location HKCU:
PS > Get-ChildItem

   Hive: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER

SKC  VC Name          Property
---  -- ----          --------
  2   0 AppEvents     {}
  0  32 Console       {ColorTable00, ColorTable01, ColorTable02, ColorTable03...}
24   1 Control Panel {Opened}
……(以下省略)……

 ここでは、Get-ChildItem/Set-Locationコマンドレットを一例に説明したが、もちろん、ほかの主要なコマンドレットでもドライブを切り替えることで、同一のコマンドレットで異なるデータストアにアクセスすることが可能になる。

[コラム]ドライバの実体は「プロバイダ」

 PowerShellのドキュメントを眺めていると、ドライバと並んで、よく登場するのが「プロバイダ」というキーワードだ。もっとも、またもや新しい概念かと身構える必要はない。プロバイダとは、ドライバの実装だと思っていただければよいだろう。ドライバの機能を実際に提供している.NET Frameworkベースのクラス・ライブラリが、プロバイダなのである。

 先ほど、Get-PSDriveコマンドレット(リスト「※PowerShellで利用可能なドライブを一覧表示させる」参照)で、PowerShell標準で提供されているドライバを確認したが、その出力項目に「Provider」というプロパティが含まれているのに気付いた方もいたかもしれない。これがそれぞれのドライブに対応するプロバイダの名前となる。これを確認すると、例えばC:、D:、E:などのドライブはFileSystemプロバイダで、HKCU:、HKLM:などのドライブはRegistryプロバイダで提供されていることが確認できる。

 以上、今回はPowerShellを利用するうえで知っておきたい基本的なキーワードとして、「コマンドレット」「.NETオブジェクト」「ドライバ(プロバイダ)」について紹介した。従来のコマンド・プロンプトと比べると、PowerShellはさまざまな点で進化を遂げているが、実のところ、底辺のところで押さえなければならないポイントはそれほどに多くはない。今回紹介したキーワードを確実に理解してさえいれば、あとは付属のドキュメントや、そのほかの書籍/記事などから理解を深めていくことは、それほど難しくはないはずだ。

 さて、今回、対話型シェル環境としてのPowerShellについて理解したところで、後編ではPowerShellのスクリプティング実行環境としての機能を見ていく。どうぞお楽しみに。End of Article


 INDEX
  [運用]Windows PowerShellコマンド&スクリプティング入門(前編)
  PowerShellの基本
    1.PowerShellを始めよう
    2.PowerShellをインストールする
    3.キーワード1「コマンドレット」―PowerShellを操作する基本コマンド
    4.キーワード2「.NETオブジェクト」―コマンドレットの戻り値はオブジェクト
  5.キーワード3「ドライブ」―データソースへのアクセスを一元化する
 
  [運用]Windows PowerShellコマンド&スクリプティング入門(後編)
  PowerShellスクリプティングの第一歩
    1.PowerShellスクリプトの基本
    2.PowerShellの変数
    3.PowerShellの制御構文
    4.PowerShellの関数
    5..NET Frameworkのクラスを利用する

 Windows運用

ホワイトペーパーTechTargetジャパン

Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  企業の仮想化に足りない“発想”とは?
仮想化運用管理のキモは意外なところに!

New!
  操作もマニュアルも分かりやすい!
ユーザー視点で開発されたPC管理ツール

New!
  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  セキュリティを知り尽くす上野氏が登壇!
@ITメールソリューションLive! in Tokyo

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  世界に通用するストレージの作り方とは?
製品に込めた思いを富士通の開発者に聞く

  OSSで手間も時間も、障害も減った――
「マピオンの事例」オープンソース活用法

  「ノートPCの持ち出し禁止」で大丈夫?
情報漏えいを防ぐ管理手法とインフラは?

  1日の処理を1秒に――MySQLの達人が語る
「コスト削減」できるチューニング

  ドキュメント作成を自動化して、SEの作業
効率を大幅アップ! Visio 2007の魅力

  急速に広がるHyper-Vでのサーバ仮想化
そのベストプラクティスをデルが解説

  @IT主催セミナーで語られた、「担当者に
求められるセキュリティ対策」をレポート

  @IT「Windows 7」 特設サイトオープン!
最新情報・移行ノウハウを公開しています