Powershell 如何从PS模块路径加载dll
我有一个PS模块,一切正常。对于作为此模块一部分的新脚本,我需要从Microsoft WindowsAPICodePack加载dll 我已将dll添加到模块内的“Assemblies”文件夹中,该文件夹安装在默认位置(C:\Program Files\WindowsPowershell\Modules\ModuleName) 使用dll的脚本在测试中运行良好,当dll位于临时文件夹(例如“c:\temp”)中时,但是当我从模块运行脚本时,使用模块中dll副本的路径(c:\Program Files\WindowsPowershell\Modules\ModuleName\Assemblys\mydllname.dll),无法加载带有“未找到文件”的dll 我是计算机的本地管理员,因此可以访问该路径,如果在运行Powershell之前升级它,该路径也会失败 我需要从这个位置加载dll,而不修改文件夹的权限,因为该模块将通过我们的内部存储库分发给许多用户。有什么办法可以做到这一点吗 有没有办法在模块加载时将dll加载到用户环境中?这也可能不起作用,因为从模块路径执行/加载dll时似乎存在权限问题 我想我可以对.psm1中的dll运行Set Acl命令,但这似乎有点笨拙,不知道安装模块进程是否具有所需的权限 示例代码:Powershell 如何从PS模块路径加载dll,powershell,dll,dllimport,Powershell,Dll,Dllimport,我有一个PS模块,一切正常。对于作为此模块一部分的新脚本,我需要从Microsoft WindowsAPICodePack加载dll 我已将dll添加到模块内的“Assemblies”文件夹中,该文件夹安装在默认位置(C:\Program Files\WindowsPowershell\Modules\ModuleName) 使用dll的脚本在测试中运行良好,当dll位于临时文件夹(例如“c:\temp”)中时,但是当我从模块运行脚本时,使用模块中dll副本的路径(c:\Program File
Try {
Add-Type -AssemblyName System.Windows.Forms
Add-Type -Path $DllPath
}
Catch {
$_
Pause
Break
}
如果
那么它就会失败
如果
那么它就会成功
尝试过
将dll添加到清单中模块的必需程序集
将此添加到脚本的开头
Using moduleName
Using namespace Microsoft.WindowsAPICodePack
同样的错误
$DllPath = "C:\temp\dllname.dll"
Using moduleName
Using namespace Microsoft.WindowsAPICodePack