为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

天涯尽头无女友 2019-10-21 14:29:03
这是为清晰起见而进行的主要编辑。看来我需要努力形成思想。以下是我遇到的确切代码。简要说明:我正在尝试设置一个Powershell类,该类将容纳不同类型的对象以便于访问。我在C#中已经做过很多次了,所以我认为这很简单。所需的类型是[System.Printing]和WMI对象。最初,我曾尝试将类直接写入Powershell配置文件以方便使用,但是当我必须在其中对代码进行分类时,我的配置文件无法加载。说它找不到类型名称“ System.Printing.PrintServer”或任何其他明确列出的类型。失败之后,我将其移至它自己的特定模块,然后设置我的配置文件以在打开时导入该模块。但是,即使存储在其自己的模块中,如果我为任何属性明确列出.Net类型,整个模块也无法加载。不管我是否添加或导入了类型/ dll。特定的问题区域是这样的:[string] $ Name [System.Printing.PrintServer] $ Server [System.Printing.PrintQueue] $ Queue [System.Printing.PrintTicket] $ Ticket [System.Management.ManagementObject] $ Unit [bool ] $ IsDefault将其设置为此时,所有“种类”都可以使用,但是然后我的所有属性都具有_Object类型,这没有帮助。[string] $ Name $ Server $ Queue $ Ticket $ Unit $ IsDefaultAdd-Type -AssemblyName System.PrintingAdd-Type -AssemblyName ReachFrameworkClass PrinterObject{    [string]$Name    [System.Printing.PrintServer]$Server    [System.Printing.PrintQueue]$Queue    [System.Printing.PrintTicket]$Ticket    [System.Management.ManagementObject]$Unit    [bool]$IsDefault   PrinterObject([string]$Name)    {        #Add-Type -AssemblyName System.Printing        #Add-Type -AssemblyName ReachFramework        $this.Server = New-Object System.Printing.PrintServer -ArgumentList [System.Printing.PrintSystemDesiredAccess]::AdministrateServer        $this.Queue =  New-Object System.Printing.PrintQueue (($this.Server), ($this.Server.GetPrintQueues() |         Where-Object {$_.Name -match $Name} | Select-Object -ExpandProperty Name))        $this.Ticket = $this.Queue.UserPrintTicket        $this.Unit = Get-WmiObject -Query "SELECT * FROM Win32_Printer WHERE Name LIKE `"%$Name%`""    }    PrinterObject([string]$Name, [bool]$IsNetwork)    {        #Add-Type -AssemblyName System.Printing        #Add-Type -AssemblyName ReachFramework        if($IsNetwork -eq $true) {        $this.Server = New-Object System.Printing.PrintServer ("\\Server")        $this.Queue =  New-Object System.Printing.PrintQueue (($this.Server), ($this.Server.GetPrintQueues() | 
查看完整描述

3 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

为了补充 PetSerAl的有用答案:


using assembly 应该是正确的解决方案,但是从Windows PowerShell v5.1 / PowerShell Core v6.1开始,尚未在解析时使用它,因为它需要额外的工作来避免在汇编时可能会不希望地执行任意代码已加载。


该问题的实现已在本GitHub问题中得到了开绿灯,并且作为此问题的一部分正在跟踪必要的工作。


查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 495 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信