【问题标题】:Use import-module with a PowerShell PSSnapin Dll将 import-module 与 PowerShell PSSnapin Dll 一起使用
【发布时间】:2016-01-07 16:04:07
【问题描述】:

我们有一个旧的 PowerShell PsSnapin (c#)。我想避免使用InstallUtil。以下导入了一个模块,其中导出了 PSSnapin cmdlet:

import-module .\MySnapin.dll

但是,当我运行模块 cmdlet 时,由于无法找到引用的程序集(特别是企业库 dll)而失败。

有没有一种巧妙的方法可以让它发挥作用?

(PsSnapin dll 和所有引用的程序集都在同一个构建目录中,当我使用 installutil 时,依赖关系都被正确解析)

【问题讨论】:

    标签: powershell powershell-module import-module pssnapin


    【解决方案1】:

    管理单元与模块有点不同。您首先需要注册管理单元,使用InstallUtil.exe:

    PS> $InstallUtil = Join-Path $([System.Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory()) "InstallUtil.exe"
    PS> & $InstallUtil "C:\Path\to\MySnapin.dll"
    

    注册 snapin 程序集后,您可以使用 Add-PSSnapin 将其加载到您的 powershell 会话中:

    PS> Add-PSSnapIn MySnapin
    

    【讨论】:

    • 确实——我们通常会这样做,但我明确地试图避免使用 InstallUtil。例如。所以我可以加载同一个管理单元的两个版本,等等。
    • 啊,我明白了。我不知道这是否可行,但是:重命名一个版本,重新编译,注册两者,用Add/Remove-PSSnapIn 在它们之间切换?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    相关资源
    最近更新 更多