在执行脚本中的第一个语句之前,将完全解析每个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 } ’@