安装补丁后,Powershell模块无法加载

时间:2015-01-05 08:21:59

标签: powershell autoload powershell-v4.0 import-module powershell-module

我正面临修补程序安装后自动加载模块的问题。顺序如下:

  • 我有一个运行在1.0.8802版本的.NET服务
  • 来自Powershell(V 4.0)我看到模块MyAgent已加载并且它的命令行开关是可访问的
  • 即使在我重新启动计算机后,当我打开Powershell时也会加载MyAgent(无需显式执行任何load / get-module命令)
  • 现在我使用WUA(Windows Update Agent)为我的.NET服务安装补丁。修补程序成功安装并自动重新启动计算机
  • 现在我打开PowerShell,MyAgent未加载。它出现在Get-Module -ListAvailable中。一旦我运行Import-Module MyAgent,一切都会像以前一样开始工作。

注意事项:

  • 在两种情况下,c:\windows\system32\Windowspowershell\v1.0\modules都存在MyAgent模块
  • 在这两种情况下,$PSModuleAutoloadingPreference都为空
  • 我的$env:PSModulePath也正确指向c:\windows\system32\Windowspowershell\v1.0\modules\

我感到困惑的原因是,为什么在安装补丁后模块没有自动加载(尽管模块存在于正确的模块文件夹中)?当我在C:\Users\<<user>>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1中创建内容为Import-Module MyAgent的个人资料文件时,此问题会解决。具有讽刺意味的是,如果我将配置文件保存在C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1中,则补丁安装本身会失败而没有任何明显的错误。我在这里缺少什么?

请帮忙!

2 个答案:

答案 0 :(得分:0)

看起来这已经开放了好几周......如果你还没有解决问题,你应该尝试将你的模块放在c:\Program Files\WindowsPowershell\Modules

我没有遇到将模块放入c:\windows\system32\Windowspowershell\v1.0\modules的问题,但据我所知,可能存在与更新相关的问题。从PS3开始(我相信)自定义模块应该加载到c:\program files\WindowsPowershell\Modules

答案 1 :(得分:0)

有类似的问题,模块没有自动为特定用户加载。对于其他人来说很好......

我的所有模块都位于C:\Program Files\WindowsPowerShell\Modules,但智能感应自动完成或在需要时自动加载它们不再有效。

一些事实:

$PSModuleAutoLoadingPreference 
# empty
$env:PSModulePath 
C:\Program Files\WindowsPowerShell\Modules # and others
Get-Module -ListAvailable
# Shows my custom made modules

<强>解决方案:

在服务器上删除了有问题的用户的个人资料,并让系统创建一个新用户。