2

MyModule.psm1次のように定義されたという単純なモジュールがあります

function Show-Text($p)
{
    Write-Host $p
}

Export-ModuleMember Show-Text

モジュールはここに保存されます - ( ISE または直接 Powershell コマンド ラインを介した通常の方法で、すべて正常に動作します)

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\Modules\MyModule (because 64-bit OS)

今、私はTest.ps1このようなスクリプトを持っています

Show-Text "Hello World"

注意: ps1 ファイルで Import-Module MyModule を実行したくありません

cmd.exe ウィンドウから次のコマンドを実行しています

C:\>Powershell -Command "& {Import-Module MyModule}" -File "C:\temp\Test.ps1"

次のエラーが表示されます

Import-Module : どのモジュール ディレクトリにも有効なモジュール ファイルが見つからなかったため、指定されたモジュール 'MyModule' は読み込まれませんでした。行:1 char:17 + & {Import-Module <<<< MyModule} -File Show.ps1 + CategoryInfo : ResourceUnavailable: (MyModule:String) [Import-Module], FileNotFoundException + FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell .Comm
ands.ImportModuleCommand

ハードコーディングしたり、完全なモジュールパスを指定したりせずに、 cmd.exeのみexactly what I have statedを介して上記を実行する方法を教えてください。

SystemModules をロードするために行うのと同様の行の何か -powershell.exe -ImportSystemModules

4

2 に答える 2

3

SysWOW64それが32ビットSystem32で64ビットだということを理解していますか?

モジュールは 32 ビット Powershell モジュール ルックアップ パスに存在するため、32 ビット Powershell コンソールでのみ表示されます。64 ビット コンソールから powershell を呼び出すと、64 ビットcmdコンソールが開きます。

32 ビット コマンド プロンプトを開くか、64 ビット モジュール パスに移動します。

于 2012-10-14T14:58:00.160 に答える
3

32 ビットの cmd.exe を実行していますか? その場合、Import-Module は機能するはずです。64 ビットの cmd.exe を実行している場合、32 ビット バージョンの PowerShell.exe (c:\windows\syswow64\windowspowershell\v1. 0\powershell.exe)。

于 2012-10-15T13:55:47.780 に答える