Skip to content

MS_PowerShellProvider

nishi_74322014 edited this page Aug 31, 2026 · 1 revision

PowerShell プロバイダとドライブ

概要

  • PowerShell ドライブ
    PowerShell の中では、C:D: などのドライブの他に、

    などの Windows PowerShell ドライブがあり、PowerShell の中では、

    • cd コマンドを使ってカレントドライブを移動したり、
    • get-childitem AD: の様に、その他のコマンドで使用したり、

    できる。

  • PowerShell プロバイダ
    これらのファイルシステム以外のものを
    ファイルシステムのドライブレターのように扱うための機構を提供するのがプロバイダ。

補足(設計思想としての面白さ): これは
**「すべてを階層的な名前空間として扱う」**という発想で、
Unix の「すべてはファイルである」に対応する考え方といえる。

利点は、同じコマンドレット群が対象を問わず使えること。
Get-ChildItemdir)、Get-ItemSet-ItemRemove-Item
Copy-ItemTest-Path が、

のいずれに対しても同じように働く。
CMD では reg query / certutil / set
対象ごとに別のコマンドを覚える必要があったのに対し、
覚える語彙が減るという実利がある。

使い方

移行メモ: 上記リンクは msdn.microsoft.com/…/cookbooks/… から
移転しているため、現在の URL に修正した。

補足(Get-PSDrive の実行例): 現在利用できるドライブは次のように確認できる。

Get-PSDrive

# プロバイダの一覧
Get-PSProvider

# レジストリを dir する
Get-ChildItem HKLM:\SOFTWARE\Microsoft | Select-Object -First 5

# 環境変数を dir する
Get-ChildItem Env:

cert:、AD:、SQLSERVER:

Certificate(cert:)、Active Directory(AD:)、SQL Server(SQLSERVER:

補足(AD: / SQLSERVER: は追加モジュールが要る): これらは
標準では存在せず、

  • AD: — RSAT の Active Directory モジュール(Import-Module ActiveDirectory
  • SQLSERVER:SqlServer モジュール(PowerShell ギャラリーから導入)

をインストールして初めて使える
(→ PowerShell Module vs Snapin)。
cert: は標準で利用できる。

既存のパスにドライブ名をつける

既存のパスにドライブ名をつける(DOS プロンプトの subst コマンドに似ている)。

New-PSDrive -Name regms -PSProvider Registry -Root HKLM\Software\Microsoft
dir regms:
Remove-PSDrive regms:

補足: New-PSDrive で作ったドライブは、
既定ではそのセッション内でのみ有効である。
恒久的に使いたい場合は -Persist(ネットワーク ドライブの場合)か、
プロファイル($PROFILE)に定義を書いておく。

プロバイダの開発

C# でプロバイダを開発できる。

補足: 自作プロバイダは、Cmdlet を作るより手間がかかる。
対象が本当に階層構造を持つ(ツリーとして辿れる)場合にのみ意味があり、
そうでなければ素直に Cmdlet を作る方がよい。

参考

本 Wiki 内


Tags: シェル, インフラストラクチャ, Windows

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally