-
Notifications
You must be signed in to change notification settings - Fork 0
MS_PowerShellProvider
-
TOP > シェル > PowerShell
- PowerShell オブジェクトベースのシェル
- PowerShell プロバイダとドライブ
- PowerShell Cmdletの作り方
-
PowerShell ドライブ
PowerShell の中では、C:やD:などのドライブの他に、-
レジストリのドライブ(
HKCU:HKLM:) - 証明書ドライブ(
Cert:) -
Active Directory モジュールが定義する Active Directory ドライブ(
AD:) - その他、追加インストールしたモジュールや
PSSnapin が定義するドライブ
などの Windows PowerShell ドライブがあり、PowerShell の中では、
-
cdコマンドを使ってカレントドライブを移動したり、 -
get-childitem AD:の様に、その他のコマンドで使用したり、
できる。
-
レジストリのドライブ(
-
PowerShell プロバイダ
これらのファイルシステム以外のものを
ファイルシステムのドライブレターのように扱うための機構を提供するのがプロバイダ。
補足(設計思想としての面白さ): これは
**「すべてを階層的な名前空間として扱う」**という発想で、
Unix の「すべてはファイルである」に対応する考え方といえる。利点は、同じコマンドレット群が対象を問わず使えること。
Get-ChildItem(dir)、Get-Item、Set-Item、Remove-Item、
Copy-Item、Test-Pathが、
- ファイル システム
- レジストリ
- 証明書ストア
- 環境変数
- Active Directory
のいずれに対しても同じように働く。
CMD ではreg query/certutil/setと
対象ごとに別のコマンドを覚える必要があったのに対し、
覚える語彙が減るという実利がある。
-
いろいろな、ファイルシステム以外のディレクトリが
Dir(Get-PSDrive)できる。- HDD
- レジストリ
- AD Directory サービス
- 環境変数
- , etc.
-
参考
- Windows PowerShell ドライブの管理
https://docs.microsoft.com/ja-jp/powershell/scripting/samples/managing-windows-powershell-drives
- Windows PowerShell ドライブの管理
移行メモ: 上記リンクは
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:
Certificate(cert:)、Active Directory(AD:)、SQL Server(SQLSERVER:)
- Certificate Provider
http://technet.microsoft.com/ja-jp/library/dd347615.aspx - AD DS の新機能: Windows PowerShell の Active Directory モジュール
http://technet.microsoft.com/ja-jp/library/dd378783%28v=ws.10%29.aspx - SQL Server PowerShell プロバイダの使用
http://technet.microsoft.com/ja-jp/library/cc281947%28v=sql.100%29.aspx
補足(
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# でプロバイダを開発できる。
- Designing Your Windows PowerShell Provider
http://msdn.microsoft.com/en-us/library/windows/desktop/ee126198%28v=vs.85%29.aspx - Provider Cmdlets
http://msdn.microsoft.com/en-us/library/windows/desktop/ee126197%28v=vs.85%29.aspx - DriveCmdletProvider Class
http://msdn.microsoft.com/en-us/library/windows/desktop/system.management.automation.provider.drivecmdletprovider%28v=vs.85%29.aspx
補足: 自作プロバイダは、Cmdlet を作るより手間がかかる。
対象が本当に階層構造を持つ(ツリーとして辿れる)場合にのみ意味があり、
そうでなければ素直に Cmdlet を作る方がよい。
- プロバイダとドライブ - Windows PowerShell | ++C++; // 未確認飛行 C
http://ufcpp.net/study/powershell/psdrive.html
- PowerShell
- PowerShell オブジェクトベースのシェル
- PowerShell Module vs Snapin
- PowerShell Cmdletの作り方
- レジストリの設定方法
- ファイルシステム
Tags: シェル, インフラストラクチャ, Windows
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。