通过powershell更改打印机纸盒设置

通过powershell更改打印机纸盒设置,powershell,printing,vbscript,Powershell,Printing,Vbscript,我试图使用WMI对象更改powershell中的纸盒设置。然而,我刚刚了解到,我试图更改的值是只读的。有人可以通过powershell或VBScript帮助我完成任务吗 $printers = Get-WMIObject -Class Win32_PrinterConfiguration | Where-Object {$_.Name -EQ "CHK.Checks"} $printers.MediaType = 270 $printers.Put() 我尝试了这个,但没有成功 请帮忙 提前谢

我试图使用WMI对象更改powershell中的纸盒设置。然而,我刚刚了解到,我试图更改的值是只读的。有人可以通过powershell或VBScript帮助我完成任务吗

$printers = Get-WMIObject -Class Win32_PrinterConfiguration | Where-Object {$_.Name -EQ "CHK.Checks"}
$printers.MediaType = 270
$printers.Put()
我尝试了这个,但没有成功

请帮忙


提前谢谢

由于该值是只读的,您将无法使用WMI设置该值。Net有
系统。打印
有一个输入箱设置,虽然不完美,但很有效。在我的模块中,我已经围绕这个做了一个函数。我认为Tray1,Tray2也有价值观,但我记不清了。除此之外,您还可以编辑PrintTicket XML。以下是该功能的相关代码:

$Printer = "Example Printer Name"
$InputBin = "AutoSelect","AutoSheetFeeder","Cassette","Manual","Tractor" #choose one
Add-Type -AssemblyName System.Printing
$Permissions = [System.Printing.PrintSystemDesiredAccess]::AdministrateServer
$QueuePerms = [System.Printing.PrintSystemDesiredAccess]::AdministratePrinter
$PrintServer = new-object System.Printing.LocalPrintServer -ArgumentList $Permissions
$NewQueue = New-Object System.Printing.PrintQueue -ArgumentList $PrintServer,$Printer,1,$QueuePerms
$InputBinCaps = $NewQueue.GetPrintCapabilities().InputBinCapability
if ($null -ne $InputBinCaps) {
    if ($InputBinCaps.Contains([System.Printing.InputBin]::$InputBin)) {
        $NewQueue.DefaultPrintTicket.InputBin = [System.Printing.InputBin]::$InputBin
        $NewQueue.UserPrintTicket.InputBin = [System.Printing.InputBin]::$InputBin
    } else {
        Write-Error "$InputBin unavailable on $Printer"
    }
}
$NewQueue.commit()
$NewQueue.dispose()
$PrintServer.commit()
$PrintServer.dispose()

如果您报告了收到的任何错误消息,或者明确表示未收到任何错误消息,这将非常有用。在后一种情况下,了解您是如何确定“它不工作”的也会很有用。@JeffZeitlin此处的错误消息不会有用,因为正如Jessica所述,该值是只读的,这意味着WMI不幸无法工作。@JeffZeitlin错误是带有“0”参数的“异常调用”Put:”提供程序无法执行我研究过的尝试操作“”,导致一个页面告诉我它是只读的。@BenH指出,这在这里没有用处。谢谢你澄清本!我执行了你的脚本。我不得不在if语句的末尾添加一个结尾“}”,但它对于设置托盘非常有效!但是,我实际上需要更改的是“纸张类型”,我需要将该值设置为“预打印”,而不是“使用打印机设置”修复缺少的内容{。这就是我从剪切和粘贴中得到的。页面大小更好,这是属性
PageMediaType
。GitHub模块也将其作为
Set-PSPTPrintConfiguration
函数的参数,或者你可以在这里修改我的代码,使之成为
PageMediaType
而不是
InputBin
太棒了。我真的很欣赏help有效。但它只适用于填充到“GetPrintCapabilities().PageMediaTypeCapability”@BenH中的值。该字段不可选择Preprinted。如果我尝试将其更改为bond,它会正常工作。但Preprinted返回:“找不到“Contains”的重载,参数计数为:“1”。“对,有一个“Capability”属性。它只是让您检查打印机是否可以使用该设置。此外,如果答案对您有效,您应该接受它。预打印不是该枚举中的值之一。下面是