連載
» 2010年05月19日 00時00分 公開

PowerShell的システム管理入門:第3回 ファイル/レジストリの操作 (1/4)

PowerShellではファイルシステムだけでなく、レジストリや環境変数なども同じ方法でアクセスできる。その操作方法を解説する。

[牟田口大介(Microsoft MVP for Data Center Management - PowerShell),著]
[運用] PowerShell的システム管理入門 ―― PowerShell 2.0で始める、これからのWindowsシステム管理術 ―― 
Windows Server Insider

 

「[運用] PowerShell的システム管理入門 ―― PowerShell 2.0で始める、これからのWindowsシステム管理術 ―― 」のインデックス

連載目次

 前回までは、PowerShellの概要と基礎文法について述べた。今回からは、PowerShellを用いたシステム管理の具体的な方法についてテーマ別に述べていく。今回はシステム管理の基本となるファイル操作およびレジストリ操作の方法について述べる。

PSプロバイダとPSドライブ

 PowerShellでは従来のシェルと同じく、ファイル・システムの情報を取得したりファイル操作を行ったりすることができる。例えばカレント・ディレクトリに含まれるファイルとフォルダの一覧を取得するにはGet-ChildItemコマンドレット(エイリアスはdir、ls、gci)を利用する。またカレント・ディレクトリを移動するにはSet-Locationコマンドレット(エイリアスはcd、chdir、sl)を利用する。

 従来のシェルではファイル・システムのドライブしか扱えなかったが、PowerShellではファイル・システム以外にレジストリ、環境変数、Active Directory、IISサイト(以上2つはモジュールのインポートが必要)などのディレクトリ構造を持つ複数のリソースを「PSドライブ」という形でマウントでき、同じコマンドレットを用いてアクセスできるのが特徴である。これらのリソースを扱うためのプログラムを「PSプロバイダ」という。例えばファイル・システムを扱うPSプロバイダはFileSystemプロバイダである。

 利用可能なPSドライブはGet-PSDriveコマンドレットによって取得できる。

Get-PSDriveコマンドレットの実行例
いくつかのPSドライブがデフォルトでマウントされていることが分かる。FileSystemプロバイダでは、ディスク使用量(Used (GB))、空き容量(Free (GB))が表示される。なお、New-PSDriveコマンドレットを用いると、任意のプロバイダ、任意のパスで新しいPSドライブを作成できる。また、利用可能なPSプロバイダの一覧はGet-PSProviderコマンドレットで調べることができる。

 例えば、レジストリを扱うRegistryプロバイダによってマウントされている、Registryドライブにアクセスしてみよう。

Registryドライブの内容の表示
RegistryドライブもFileSystemドライブと同じコマンドレットでアクセスできる。
  (1)Set-LocationコマンドレットでHKCU:ドライブ(HKEY_CURRENT_USER)に移動する。
  (2)Get-ChildItemコマンドレットを実行する。
  (3)カレントのキーが表示される。
  (4)カレントにあるレジストリ・キー(サブキー)の一覧が表示されている。表示項目の詳細については後ほど述べる。

 さて、いままでの例で表示した項目はすべて.NETのオブジェクトである。例えばFileSystemドライブにおいて、Get-ChildItemコマンドレットで取得されるファイルとフォルダは、それぞれSystem.IO.FileInfoオブジェクトとSystem.IO.DirectoryInfoオブジェクトである。またRegistryドライブにおいて取得されるレジストリ・キーはMicrosoft.Win32.RegistryKeyオブジェクトである。このことは、

Get-ChildItem | Get-Member

というコマンドを実行すれば確認できる。

 このようにPSプロバイダは、リソースとそれを表す.NETオブジェクトを関連させてPSドライブという形でマウントし、同じコマンドレットで扱えるようにする仕組みである。PSドライブを扱うコマンドレットを用いることで、ファイルやレジストリ操作が可能になる。次のページから詳しく解説する。

【コラム】タブ補完機能

 PowerShellには従来のシェルと同様、タブ補完機能が存在する。[Tab]キーでPSドライブのパスを補完できるほか、変数名やコマンドレット名やコマンドレット・パラメータやプロパティ/メソッド名を補完することができる。

■パス補完


この状態で[Tab]キーを押下すると、

サブフォルダやファイルの名前が補完される。[Tab]キーを押下し続けると、次々に候補が表示されていく。

■コマンドレット名補完


「Set-」と入力した段階で[Tab]キーを押下すると、

名詞部分が補完される。[Tab]キーを押下し続けると次々に候補が表示されていく。

■コマンドレット・パラメータ名補完


「-p」で始まるパラメータ名を探すには、「-p」と入力して[Tab]キーを押下する。

すると、パラメータ名が補完される。


 このほかにも、「$a」と入力して[Tab]キーを押下すると「a」で始まる変数名が候補として表示される。「$obj.」と入力して[Tab]キーを押下すると、その変数に格納されているオブジェクトのプロパティとメソッド名が候補として表示される。


  なお、タブ補完機能とは直接は関係ないが、PowerShellでもコマンド・プロンプトと同様、コンソールで[↑][↓]キーを押下すると、これまでのコマンド入力履歴が表示される。この履歴の一覧を見るにはGet-Historyコマンドレット(エイリアスはghy、h、history)を用いる。Invoke-Historyコマンドレット(エイリアスはihy、r)を用いると、履歴からコマンドを再実行できる。


       1|2|3|4 次のページへ

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。