特集次世代WindowsシェルMSH(コード名:Monad)を試す(前編)デジタルアドバンテージ 遠藤 孝信 |
|
|
プロバイダとして提供される各種ドライブ
ところで、remove-itemコマンドはエイリアスを削除するだけではない。aliasコマンドで表示されるエイリアス一覧をよく見ると、remove-itemのエイリアスには、rm、rmdir、del、erase、rdなどがある
実際、remove-itemコマンドではファイルやディレクトリを削除することができる。
| |
remove-itemコマンドによるファイルの削除 |
コマンド・プロンプトでもそうであったが、Cドライブの現在のディレクトリから「alias.html」を削除するには、次のようにも記述できるのをご存じだろう。上記の実行で「c:」が省略できたのは、カレント・ドライブが「Cドライブ」だからだ。
| |
Cドライブにあるalias.htmlファイルの削除 |
ここで先ほどの「alias:c」を思い出してほしい。「c:alias.html」がCドライブのalias.htmlというファイルを示すように、「alias:c」はAliasドライブ*の「c」というエイリアスを示している。つまりMSHでは、エイリアスの各項目はAliasドライブのアイテムとして操作できるのである。
* MSHのコマンドラインでは大文字・小文字は区別されないが、ここではaliasコマンドと区別するために、エイリアスのドライブを「Alias」と記述している。 |
そして、remove-itemはカレント・ドライブのアイテム(項目)を削除するためのものだ。名詞部分が「item」となっているCmdletには、copy-item、move-item、get-item、new-itemなどがある。これらのコマンドはファイルやエイリアスや、後述するようにレジストリの項目などに対しても機能する。
■エイリアスに対するオペレーション
カレント・ドライブを別のドライブに切り替えるには「set-locationコマンド」を使う。ちなみに「cd」はこのコマンドのエイリアスだ(MSHでは「cd」によって、ディレクトリの変更だけでなく、ドライブの変更もできる)。次の例ではカレント・ドライブをAliasドライブに切り替えている。
| |
set-locationコマンドによるドライブの切り替え |
これ以降は、定義されたエイリアスに対して、dir(get-childitem)やtype(get-content)、copy(copy-item)などが可能になる。以下にその実行例を示す。
| |
Aliasドライブでのdir、type、copyの実行 |
もちろんカレント・ドライブに関係なく「copy alias:cd alias:chd」といった実行も可能だ。
■レジストリに対するオペレーション
MSHでドライブとして扱われるものには、エイリアス以外にも、レジストリ(HKCUおよびHKLM)や環境変数(Env)、後述する関数(Function)、シェル内で定義された変数(Variable)、認証書(Cert)などが標準で用意されている。
ドライブの一覧は「get-driveコマンド」で見ることができる。
| |
get-driveコマンドによるドライブの一覧表示 |
次の実行例はレジストリにドライブを切り替え、目的のキーの位置まで移動し、そのキーの値のデータを書き換えているところだ。キーのデータを書き換えるには「set-propertyコマンド」を使用する。
| |
レジストリ・ドライブにおけるキー・データの書き換え |
レジストリに対しても、ファイルやディレクトリと同様に[TAB]キーによる補完が利く。ちなみにCmdletに対しては、例えば「set-」までを入力して[TAB]キーを押せば、名詞部分が補完される。
以下の画面は、上記の操作の結果をレジストリ・エディタで確認しているところだ。もともと「Restricted」だった「ExecutionPolicy」のデータを「Unrestricted」に書き換えた。
各ドライブで共通にコマンドが使えるということにはそれほど大した意味はないが、レジストリの操作がコマンドラインから行えるということは、システム管理の面で大きな意味があるだろう。
■ドライブの実体はプロバイダ
ユーザーにはドライブとして見える「C」「D」や「Alias」「HKLM」は、MSH内部では「プロバイダ」として実装されている。実装されているプロバイダの一覧は「get-providerコマンド」で見ることができる。
| |
get-providerによるプロバイダの一覧表示 |
この一覧からも分かるように、例えば「FileSystemプロバイダ」がCやDといったドライブへのアクセスを提供している。
Cmdletと同様に、プロバイダも追加可能であり、C#やVBで作成できる。プロバイダの例としてはデータベースやFTPへアクセスするものなど多数考えられる。今後はさまざまなMSH用のプロバイダが登場するだろう。
INDEX | ||
[特集] 次世代WindowsシェルMSH(コード名:Monad)を試す(前編) | ||
1. エイリアスが基本となるオペレーション | ||
2. プロバイダとして提供される各種ドライブ | ||
3. Cmdlet(コマンドレット)と関数(Function) | ||
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|