第3回 ファイル/レジストリの操作:PowerShell的システム管理入門(1/4 ページ)
PowerShellではファイルシステムだけでなく、レジストリや環境変数なども同じ方法でアクセスできる。その操作方法を解説する。
前回までは、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ドライブのパスを補完できるほか、変数名やコマンドレット名やコマンドレット・パラメータやプロパティ/メソッド名を補完することができる。
このほかにも、「$a」と入力して[Tab]キーを押下すると「a」で始まる変数名が候補として表示される。「$obj.」と入力して[Tab]キーを押下すると、その変数に格納されているオブジェクトのプロパティとメソッド名が候補として表示される。
なお、タブ補完機能とは直接は関係ないが、PowerShellでもコマンド・プロンプトと同様、コンソールで[↑][↓]キーを押下すると、これまでのコマンド入力履歴が表示される。この履歴の一覧を見るにはGet-Historyコマンドレット(エイリアスはghy、h、history)を用いる。Invoke-Historyコマンドレット(エイリアスはihy、r)を用いると、履歴からコマンドを再実行できる。
Copyright© Digital Advantage Corp. All Rights Reserved.