c# - Powershell v4 不自动导入模块

标签 c# powershell module load powershell-4.0

我正在使用 Microsoft PowerShell v4:

PS C:\> get-host

Name             : ConsoleHost
Version          : 4.0
InstanceId       : 3b4b6b8d-70ec-46dd-942a-bfecf5fb6f31
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : de-CH
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

我在 Visual Studio 2012 中开发了一个 C# 项目,目标是 .NET Framework 4,其中包含一些 CmdletSnapin。我可以调试它们,一切正常。

我已经创建了路径 C:\PowerShell\Modules\ 并将其添加到 PSModulePath 环境变量中。

我将 rMySnapIn.dll 放到路径 C:\PowerShell\Modules\MySnapIn

我希望模块会自动加载,这样我的新 cmdlet 就可以使用了,但它们并没有:模块没有加载。我必须编写 Import-Module MySnapin 才能加载它。

如何让模块自动加载?

最佳答案

可帮助您确定问题的 list :

  1. 根据 What's New in Windows PowerShell ,“模块的自动导入是通过以下方式触发的:(a) 在命令中使用 cmdlet,(b) 为不带通配符的 cmdlet 运行 Get-Command,或 (C) 为不带通配符的 cmdlet 运行 Get-Help。” (这适用于 V3 和 V4。)您如何确认模块未加载?

  2. 根据 about_Modules , "仅自动导入存储在 PSModulePath 环境变量指定位置的模块。"您声明您确实将路径添加到 PSModulePath。当我检查我的路径时,我看到包含的每个路径都以反斜杠终止,因此在您的情况下,您需要 C:\PowerShell\Modules\ 而不仅仅是 C:\PowerShell\Modules $env:PsModulePath 的值是多少?

  3. 根据 this post根据 Thomas Lee 以及我自己的经验,自动加载不适用于 script 模块;但是,您声明您使用的是已编译模块,因此这不应该是您的问题。

  4. $PSModuleAutoLoadingPreference 首选项变量可用于关闭自动加载;但是,除非您明确更改它,否则它默认为 All 很可能这不是问题(about_Preference_Variables 向您显示了可能的值)。 $PSModuleAutoLoadingPreference 的值是多少?

  5. 最后但并非最不重要的一点——我特别怀疑您似乎在混合管理单元和模块这一事实。它们是不同类型的实体,不能混合使用。 Snapins 通过 Add-PSSnapin 加载。模块通过 Import-Module 加载。如您所知,模块也是通过自动加载来加载的——我怀疑编写为管理单元的代码可能并非如此。此外,不推荐使用管理单元;新代码应使用模块编写(即派生自 CmdletPSCmdlet,详见 Writing a Windows PowerShell Cmdlet)。

关于c# - Powershell v4 不自动导入模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23909746/

相关文章:

c# - Linq查询到Json字符串

c# - 具有IEnumerable <Brush>作为ItemsSource和SelectedItem异常的ComboBox

c# - 如何在 Web 浏览器(例如 IE)中打开 URL 并传递凭据

shell - Windows Powershell 中的 Unix 命令等效项

json - 合并两个json对象

python - 在 Python 中导入的准确时间

c# - 将有条件构建的 SQL where 子句转换为 LINQ

powershell - 需要在PowerShell脚本中修剪URL

haskell GHCi 无法导入模块

python - Flask 应用程序不使用另一个模块中定义的路由