web-dev-qa-db-ja.com

Import-Module WebAdministrationはスクリプトからは読み込まれませんが、コマンドラインからは読み込まれます

PowerShellを使用してビルドをスクリプト化するプロジェクトに参加します。ビルドはWebAdministrationモジュールを使用してローカルIISインスタンスを管理します。ビルドスクリプトを実行すると、WebAdministrationをインポートしようとすると次のエラーがスローされます。

エラー:06/29/2016 17:28:35:C:\ dev\src\nib-ravendb\build\ConfigureIis.ps1:10 char:1 + Import-Module WebAdministration + ~~~~~~~~~ ~~~~~~~~~~~~~~~ ~~~~~~~ [<< == >>]例外:有効なモジュールファイルが見つからなかったため、指定されたモジュール 'WebAdministration'はロードされませんでした任意のモジュールディレクトリ。エラー:1

どのように実行するとImport-Module WebAdministrationPowerShellコマンドラインでモジュールがインポートされ、そこから機能を使用できます。その後のビルドスクリプトの実行はまだ失敗します。

私が持っています IIS 7.5およびPowerShell 4

このインポートがコマンドラインではなくスクリプトで失敗する理由と、それを修正する方法を知っている人はいますか?

8
Klee

結局チョコレートのような問題が発生し、$env:PSModulePathが最初のエントリに切り捨てられました。これが、スクリプトではなく入力した場合にスクリプトが機能していた理由です。

実行しているスクリプトのさまざまなポイントで$env:PSModulePathをログに記録して見つけました。

$env:PSModulePathのエントリを並べ替えることで回避しました。

他のいくつかの良い提案については@Richardの答えを見てください。

0
Klee

サーバーの場合、WebAdministrationモジュールを使用するには、Web Server (IIS)の下にロールManagement Toolsをインストールする必要があります。使用可能なモジュールがあるかどうかを確認するには、Get-Module -ListAvailableを使用します。

Windows 7から10の場合、IIS Management Scripts and tools >> Internet Information Servicesの下にWeb Management Tools機能をインストールする必要があります。

WebAdministration .psd1ファイルを手動で検索してインポートすることもできます。 $env:psmodulepathを使用して、モジュールが格納されている場所を特定し、実行します。

Import-Module -Name 'C:\Windows\System32\WindowsPowerShell\v1.0\Modules\WebAdministration\WebAdministration.psd1' 

Server 2008の場合、以下を試すことができますが、これは2012以降では機能しない可能性があります。

Add-PSSnapin WebAdministration

Import-ModuleまたはAdd-PSSnapinを使用してWebAdministrationモジュールをロードできるようにするには、管理者権限でスクリプトを実行する必要があります。

また、PowerShellの実行ポリシーがUnrestrictedに設定されていることを確認します。

Set-ExecutionPolicy unrestricted

あなたはこれを見たいかもしれません 質問

10
Richard