現在Youtubeに注力してますので是非チャンネル登録お願いします!

胡田昌彦のコンピューター系チャンネル

PowerShellモジュールのインストールパス

未分類
この記事は約2分で読めます。

PowerShellモジュールに関しては適当にinstall-moduleとやっておけば動くのでこれまであまり深く考えたことはなかったのですが、今日、DSC関連で結構苦労してしまったので書き残しておきます。

まず、Install-Moduleでモジュールをインストール。

Install-Module (PowerShellGet) - PowerShell
The Install-Module cmdlet gets one or more modules that meet specified criteria from an online repository. The cmdlet verifies that search results are valid mod...

この時に、モジュールが入る場所が複数あります。

  1. 現在のユーザー用:$HOME\Documents\PowerShell\Modules
  2. すべてのユーザー用:$env:ProgramFiles\PowerShell\Modules

1と2の切り替えはInstall-Moduleの-Scopeパラメーター。何もスコープを指定しない、あるいは-Scope CurrentUserとすれば「1.現在のユーザー用」に入ります。-Scope AllUsersとすれば「2.すべてのユーザー用」に入ります。

で、これでおしまいではなくて…

  • PowerShell自体にWindows PowerShellとPowerShell(Core)がある。
  • コマンドによっては別ユーザーのコンテキストで実行されるものがある。
  • 複数バージョンを混在させることも可能

という要素もあり、複雑です。

モジュールを読み込む場所自体は「$Env:PSModulePath」で参照可能です。

私が今日ハマったのはStart-DscConfiguration実行時にモジュールが見つからないといわれてしまうという事象でした。どうやらWindowsPowerShellのモジュールディレクトリ(C:\Program Files\WindowsPowerShell\Modules)からしかモジュールを探してくれていなかったので、手動でモジュールをコピーして回避してしまいました。

これまで「動いているからいいや」ということであまりよく仕組みを調べずにやり過ごしてきてしまいましたが、それではうまくいかないケースに遭遇したのでこれを機にきちんとどこに存在するモジュールが使用されているのかなども意識していこうと思います。

コメント

タイトルとURLをコピーしました