在PowerShell类中使用外部代码

时间:2018-05-25 13:20:15

标签: .net powershell reflection .net-assembly aspose

在我的PowerShell脚本中,我尝试从外部.NET DLL访问函数。 这个例子是关于Aspose.NET的,它是一个用于办公自动化的工具,可以访问各种文件格式。

大多数代码示例都是关于高级编译的.NET语言,但我想将它与PowerShell一起使用。

我的观察结果如下:

$AsposeDll = New-Object "System.IO.FileInfo" ".\Aspose.Pdf.dll"
Add-Type -Path $AsposeDll.FullName
[Reflection.Assembly]::LoadFile($AsposeDll.FullName)

这执行完美并打印出文件的版本,我认为它已被加载。

如果我将以下内容放在全球空间

[Aspose.Pdf.License]$Lic = New-Object "Aspose.Pdf.License"

它也执行得很好。 如果我将相同的命令放入顶级函数,如:

function Test
{
    [Aspose.Pdf.License]$Lic = New-Object "Aspose.Pdf.License"
}
Test

这不会造成任何问题。

但是如果我把它写在一个类(它是PowerShell 5.0)中:

class PdfProvider
{
    [bool]$Loaded
    [Aspose.Pdf.License]$Lic
}

它不会执行,因为它告诉我无法找到类型。 即使在类“应该被读取”之前站在代码中的命令也不会被执行,所以我的猜测是它屏幕优先查看是否可能发生非法执行(不加载DLL)。

有没有办法可以在PowerShell中的类中使用外部代码,还是禁止这样做?

0 个答案:

没有答案