8

我创建了一个 powershell 模块,如果我像这样加载它就可以正常工作

Import-Module "C:\temp\My.PowerShell.DocumentConversion.dll"

我确实在全局程序集缓存中注册了该模块,但无法从那里加载它。我已经验证该模块实际上已加载到 gac 中。我认为像这样加载模块就足够了

Import-Module My.PowerShell.DocumentConversion.dll

显然我错了,如何从 gac 运行 powershell 模块?

4

2 回答 2

18

试试Add-Typecmdlet:

Add-Type -Assembly My.PowerShell.DocumentConversion

如果它不起作用,请尝试LoadWithPartialName方法:

[System.Reflection.Assembly]::LoadWithPartialName('My.PowerShell.DocumentConversion')

或使用完整路径:

[System.Reflection.Assembly]::LoadFile(...)
于 2013-02-12T16:04:57.807 回答
2

只要程序集在 GAC 中,只需使用强名称来引用程序集。要获取 GAC 的路径,请注意它在 .Net 4.0 http://en.wikipedia.org/wiki/Global_Assembly_Cache中已更改

$assemblyPath = 'path to the assembly file in the gac'
$fullName = [System.Reflection.AssemblyName]::GetAssemblyName($assemblyPath).FullName
[System.Reflection.Assembly]::Load($fullName)
于 2014-02-20T13:02:14.627 回答