Запустить Powershell.exe из командной строки (cmd.exe) с ключами -Command и -File?
У меня есть простой модуль под названием 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"
NB: я не хочу делать модуль импорта MyModule в файле ps1
Я запускаю следующую команду из окна cmd.exe
C:\>Powershell -Command "& {Import-Module MyModule}" -File "C:\temp\Test.ps1"
Я получаю следующую ошибку
Модуль импорта: указанный модуль "MyModule" не был загружен, поскольку ни в одном каталоге модулей не было найдено допустимого файла модуля. В строке:1 символ:17 + & {Import-Module <<<< MyModule} -File Show.ps1 + CategoryInfo: ResourceUnavailable: (MyModule: String) [Import-M odule], FileNotFoundException + FullyQualifiedErrorId: Modules_ModuleNotFound, Microsoft.PowerShell.Comm
ands.ImportModuleCommand
Может кто-нибудь помочь мне, как выполнить exactly what I have stated
выше через cmd.exe ТОЛЬКО без жесткого кодирования или без указания полного пути модуля, пожалуйста?
Что-то похожее мы делаем для загрузки SystemModules - powershell.exe -ImportSystemModules
2 ответа
Вы используете 32-разрядный cmd.exe? Если это так, то импорт-модуль должен работать. Если вы используете 64-битный cmd.exe, он запустит 64-битный PowerShell.exe, если вы не укажете полный путь к 32-битной версии PowerShell.exe (c:\windows\syswow64\windowspowershell\v1.0\powershell.exe).
Вы понимаете, что SysWOW64
32-битный и System32
64-битный верно?
Модуль присутствует в пути поиска 32-битного модуля Powershell и, следовательно, будет виден только 32-битной консоли Powershell. Если вы вызываете powershell из 64-битного cmd
консоль, вы откроете 64-битную.
Либо откройте 32-битную командную строку или переместите ее на путь 64-битных модулей,