【发布时间】:2015-01-27 06:06:04
【问题描述】:
说明:我正在从 ruby 脚本 (.rb) 文件运行/执行 powershell
exec "powershell.exe Import-Module PSWindowsUpdate"
我从“Windows Update PowerShell Module”下载了PSWindowsUpdate模块并将文件复制到以下位置:
%WINDIR%\System32\WindowsPowerShell\v1.0\Modules
当我运行上述程序时,我收到以下错误:
Z:\Desktop>ruby windows_patch.rb
Import-Module : The specified module 'PSWindowsUpdate' was not loaded because
no valid module file was found in any module directory.At line:1 char:1
+ Import-Module PSWindowsUpdate
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (PSWindowsUpdate:String) [I
mport-Module], FileNotFoundException
+ FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Comm
ands.ImportModuleCommand
但是,当我通过 Powershell 运行它时,它运行得很好。
我正在使用:
- Windows 7 x64
- PowerShell v4
- Ruby v2.1.5
exec "powershell.exe ruby -e 'puts $:'" 的结果是:
C:/Ruby21/lib/ruby/site_ruby/2.1.0
C:/Ruby21/lib/ruby/site_ruby/2.1.0/i386-msvcrt
C:/Ruby21/lib/ruby/site_ruby
C:/Ruby21/lib/ruby/vendor_ruby/2.1.0
C:/Ruby21/lib/ruby/vendor_ruby/2.1.0/i386-msvcrt
C:/Ruby21/lib/ruby/vendor_ruby
C:/Ruby21/lib/ruby/2.1.0
C:/Ruby21/lib/ruby/2.1.0/i386-mingw32
【问题讨论】:
-
尝试使用
exec "powershell.exe ruby -e 'puts $:'",它将打印模块目录可用于干powershell。 -
@mudasobwa 添加了上面的结果
-
所以解压模块到任何已知位置(例如
C:/Ruby21/lib/ruby/vendor_ruby)而不是%WINDIR%\System32\WindowsPowerShell\v1.0\Modules。 Ruby 模块不是 PS 模块,反之亦然。 -
@mudasobwa 完全相同的错误复制到该位置和
C:/Ruby21/lib/ruby/vendor_ruby/2.1.0 -
哦,对不起,那是我搞混了。我仔细阅读了模块说明,发现
PSWindowsUpdate是PS 模块,而不是ruby 模块。所以问题是PS找不到。请忽略我的错误建议,将其提取到 ruby 模块目录中。
标签: ruby powershell import-module