-
Notifications
You must be signed in to change notification settings - Fork 0
MS_PowerShellModuleVsSnapin
-
TOP > シェル > PowerShell
- PowerShell Module vs Snapin
- PowerShell Cmdletの作り方
PowerShell は、PSSnapin と Module で拡張されます。
-
Windows の役割を追加すると、役割を管理する Cmdlet が一緒にインストールされます。
また、何らかの製品をインストールした際に、PowerShell Cmdlet が追加でインストールされることもあります。 -
PowerShell コマンドプロンプトを開いた状態では、それらの追加された Cmdlet はまだ使用できません。
PowerShell コマンドプロンプトの中でAdd-PSSnapinあるいはImport-Moduleを使って読み込みます。 -
読み込みの際に指定する PSSnapin 名、Module 名は、役割、製品の管理者用ドキュメントを参照してください。
補足(現在は明示的な読み込みが不要なことが多い): PowerShell 3.0 以降は
モジュールの自動読み込みが働くため、
Import-Moduleを書かなくても、コマンドレット名を打つだけで
対応するモジュールが自動的に読み込まれる。ただし、次の場合は明示的に
Import-Moduleする意味がある。
- スクリプトの依存関係を明示したいとき
(読み手にも、実行環境にも要件が伝わる)#Requires -Modules ActiveDirectoryと併せて、
モジュールが無い環境での実行を早期に止めたいとき- モジュールが標準の検索パス(
$env:PSModulePath)の外にあるとき
- インストールされている module は、
get-module -listavailableで確認することができる。
補足(モジュールの入手先): 現在は PowerShell ギャラリー(PSGallery)から
Install-Moduleで導入するのが一般的である。Find-Module -Name SqlServer # 探す Install-Module -Name SqlServer -Scope CurrentUser Get-Module -ListAvailable # 導入済みを確認 Update-Module -Name SqlServer # 更新
-Scope CurrentUserを付けると管理者権限なしで導入できる。
なお、PSGallery は既定で「信頼されていないリポジトリ」として扱われ、
確認プロンプトが出る。
PowerShell 6.0 からドロップされている。
補足(両者の違いと、Snapin が廃れた理由): 両者は
どちらもコンパイル済みの Cmdlet を追加する仕組みだが、
導入方法が大きく異なる。
PSSnapin Module 実体 .NET アセンブリのみ アセンブリ/スクリプト/マニフェスト 導入 レジストリへの登録が必要( installutil)フォルダに置くだけ 必要な権限 管理者権限 不要(ユーザー スコープに置ける) 配布 難しい ファイル コピー/PSGallery 現況 PowerShell 6.0 で廃止 標準 つまり、Snapin はレジストリ登録という副作用を伴うため、
配布・可搬性・アンインストールのいずれでも Module に劣った。
PowerShell Core がクロスプラットフォームになった時点で、
レジストリ前提の仕組みは成立しなくなり、廃止された。Windows PowerShell 5.1 では Snapin も引き続き動作するため、
古い製品(Exchange 2010 世代など)の管理スクリプトには残っている。
PowerShell 7 へ移行する際は、Snapin 依存が障壁になる点に注意。
- Import-Module
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/import-module
- Add-PSSnapin
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/add-pssnapin
-
Add-PSSnapin vs. Import-Module
https://social.technet.microsoft.com/Forums/scriptcenter/en-US/3e1ca6e1-d197-4c04-a145-1e922814a618/addpssnapin-vs-importmodule?forum=ITCG -
powershell - What's the difference between Add-PsSnapIn and Import-Module - Stack Overflow
https://stackoverflow.com/questions/5038887/whats-the-difference-between-add-pssnapin-and-import-module -
Code Inside Blog | PowerShell SnapIns vs. Modules
https://blog.codeinside.eu/2013/03/08/powershell-snapins-vs-modules/
Tags: シェル, インフラストラクチャ, Windows
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。