Install-ModuleしたのにImport-Moduleできない時の対処
PowerShellでImportExcelモジュールを使いたくてインストールしたんですが、PowerShellウィンドウを開いてImport-Moduleすると問題ないのに、スクリプトからImport-Moduleするとエラーがなぜか出て困ったのでメモ。
環境
モジュールはインストールされている状態です。
PS C:\Users\takashi.nasu> Get-installedModule Version Name Repository Description ------- ---- ---------- ----------- 7.8.6 ImportExcel PSGallery PowerShell module to import/export Excel…
事象
スクリプト内からImport-Moduleを実行すると以下のようなエラーになりました。
PS C:\Users\takashi.nasu\Downloads> powershell.exe -ExecutionPolicy Bypass -File .\manage_iam_users.ps1 Import-Module : モジュール ディレクトリに有効なモジュール ファイルが見つからなかったため、指定されたモジュール 'ImportE xcel' は読み込まれませんでした。 発生場所 C:\Users\takashi.nasu\Downloads\hoge.ps1:2 文字:1 + Import-Module ImportExcel + ~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ResourceUnavailable: (ImportExcel:String) [Import-Module], FileNotFoundException + FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand Import-Excel : 用語 'Import-Excel' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前とし て認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、 再試行してください。 発生場所 C:\Users\takashi.nasu\Downloads\hoge.ps1:8 文字:14 + $excelData = Import-Excel -Path $excelPath -StartRow 3 + ~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (Import-Excel:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
モジュールの場所を確認
PS C:\Users\takashi.nasu> Import-Module ImportExcel -PassThru -Verbose VERBOSE: Loading module from path 'C:\Users\takashi.nasu\OneDrive\ドキュメント\PowerShell\Modules\ImportExcel\7.8.6\ImportExcel.psd1'. ...以下省略
なんかよくわからないけどOneDriveの中にモジュールがインストールされてしまったようです。
対処
ググってみると、C:\Program Files\WindowsPowerShell\Modules に配置されるのが正しいみたいなので、以下のコマンドでモジュール一式を生成してあるべき場所に配置しました。
Save-Module -name ImportExcel -Path .\
上記で生成されたモジュール一式を C:\Program Files\WindowsPowerShell\Modules に配置することで無事にスクリプトからImport-Module実行できました。