【发布时间】:2017-02-24 16:27:14
【问题描述】:
我有一个用作 PowerShell cmdlet 的 C# 项目 - 这应该是产品主要功能的 API - 所以我必须在我的 PowerShell 库中引用很多 dll。
我的问题是客户希望从任何位置加载 PowerShell dll,而不将工作目录设置为所有 dll 所在的程序文件夹。但是,如果我通过将工作目录设置为程序文件夹的快捷方式打开 Powershell,我只能使用我的 PowerShell 命令,如下所示:
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -noexit -command "[reflection.assembly]::loadFrom('.\PSAPI.dll') | import-module"
并将工作目录设置为已安装产品的程序文件夹。
如果我只是使用
[Reflection.Assembly]::LoadFile("C:\Program Files(x86)\MyProduct\PSAPI.dll")
或
[Reflection.Assembly]::LoadFrom("C:\Program Files(x86)\MyProduct\PSAPI.dll")
它总是失败。是否有解决方案(无需将所有文件复制到 PowerShell 文件夹)?
这是我尝试的方法和我得到的错误 - 我无法以其他方式设置引用的 dll - .NET 应用程序正在工作目录中查找引用的 dll - 我在 powershell 中设置工作目录以确保我'在正确的目录中,但它不会加载我的模块
[reflection.assembly]::loadFrom( 'C:\Program Files (x86)\ASG-Remoteesktop 2016\ASGRD-PSAPI.dll' ) | import-module
使用“1”参数调用“LoadFrom”的异常:“无法加载文件或 程序集 'file:///C:\Program Files (x86)\ASG-Remoteesktop 2016\ASGRD-PSAPI.dll' 或其依赖项之一。系统找不到 指定文件。” 在行:1 字符:1 + [reflection.assembly]::loadFrom('C:\Program Files (x86)\ASG-Remoteesktop 2016\A ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : FileNotFoundException
【问题讨论】:
标签: c# powershell powershell-cmdlet