gpt4 book ai didi

powershell - 无法在 PowerGUI 中运行 powershell 脚本

转载 作者:行者123 更新时间:2023-12-02 23:16:34 25 4
gpt4 key购买 nike

当我直接从 Powershell 控制台运行我的脚本时,它可以工作。当我在 PowerGUI 中运行我的脚本并尝试实例化一个对象时,我得到一个错误:

使用“3”参数调用“.ctor”的异常:“无法加载文件或程序集'MyLib,Version=1.0.0.0,Culture=neutral,PublicKeyToken=77f676cc8f85d94e'或其依赖项之一。系统找不到指定文件。”

如果我将所有需要的 DLL 放在 $PSHOME 中,脚本将从控制台成功运行,而不是 PowerGUI。如果我将 DLL 移动到本地目录并使用反射加载 DLL,则脚本将不会在 PowerGUI 或 powershell 控制台中运行。

[reflection.assembly]::loadfile('c:\mylibs\mylib.dll')



我需要做什么才能让脚本在 PowerGUI 中运行?理想情况下,我希望 DLL 位于与 $PSHOME 不同的目录中。

最佳答案

您应该使用 [Assembly]::LoadFrom与加载文件相反。 LoadFile 旨在加载无法在正常程序集加载上下文中加载的程序集,例如您尝试加载同一程序集的两个版本的情况。它不使用正常的探测规则,因此它不会自动加载依赖项。这是 LoadFile 文档的摘录.

Use the LoadFile method to load and examine assemblies that have the same identity, but are located in different paths. LoadFile does not load files into the LoadFrom context, and does not resolve dependencies using the load path, as the LoadFrom method does. LoadFile is useful in this limited scenario because LoadFrom cannot be used to load assemblies that have the same identities but different paths; it will load only the first such assembly.



如果您使用的是 PowerShell 2.0,您可能希望使用 Add-Type 代替:
Add-Type -Path c:\mylibs\mylib.dll

如果一切都失败了, run Fuslogvw.exe找出绑定(bind)失败的原因。

关于powershell - 无法在 PowerGUI 中运行 powershell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2009044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com