当前位置:  开发笔记 > 编程语言 > 正文

在Powershell(V5)类中使用.Net对象

如何解决《在Powershell(V5)类中使用.Net对象》经验,为你挑选了1个好方法。



1> user4003407..:

在执行脚本中的第一个语句之前,将完全解析每个PowerShell脚本.类定义中的不可解析的类型名称标记被视为解析错误.要解决您的问题,您必须在解析类定义之前加载类型,因此类定义必须位于单独的文件中.例如:

Main.ps1:

Add-Type -AssemblyName System.Printing
Add-Type -AssemblyName ReachFramework

. $PSScriptRoot\Class.ps1

Class.ps1:

using namespace System.Management
using namespace System.Printing

Class PrinterObject
{
    [string]$Name
    [PrintServer]$Server
    [PrintQueue]$Queue
    [PrintTicket]$Ticket
    [ManagementObject]$Unit
    [bool]$IsDefault
}

另一种可能性将嵌入Class.ps1为字符串并用于Invoke-Expression执行它.这将延迟将类定义解析为可用类型的时间.

Add-Type -AssemblyName System.Printing
Add-Type -AssemblyName ReachFramework

Invoke-Expression @‘
    using namespace System.Management
    using namespace System.Printing

    Class PrinterObject
    {
        [string]$Name
        [PrintServer]$Server
        [PrintQueue]$Queue
        [PrintTicket]$Ticket
        [ManagementObject]$Unit
        [bool]$IsDefault
    }
’@


那么这种行为是一个错误,还是PowerShell的导入系统这么糟糕?
推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有