禁用打印机的“双向通信”?

时间:2018-02-26 16:06:18

标签: powershell powershell-v3.0

如何使用PowerShell禁用“双向通信”?

运行时我可以看到EnableBIDI

get-WmiObject -class Win32_printer | fl *

但是当我尝试这个时,它说没有找到属性?

Set-PrinterProperty -PrinterName "Some Printer" -PropertyName "EnableBIDI" -Value $False

1 个答案:

答案 0 :(得分:0)

您正在混合来自两个不同WMI类的属性。 Set-PrinterPropertyMSFT_PrinterProperty名称空间操纵未记录的root/standardcimv2类的实例,该名称空间具有与上一个命令中的Win32_Printer class不同的属性。

相反,请操纵Win32_Printer类的所需实例,因为它具有所需的属性,然后调用Put()提交更改。在高程运行时这对我有用:

$printer = Get-WmiObject -Class 'Win32_Printer' -Filter 'Name = ''My Printer Name'''
$printer.EnableBIDI = $false
$printer.Put()

使用更新的CimCmdlets module,您可以使用Get-CimInstanceSet-CimInstance cmdlet以类似的方式进行更改...

$printer = Get-CimInstance -ClassName 'Win32_Printer' -Filter 'Name = ''My Printer Name'''
$printer.EnableBIDI = $false
Set-CimInstance -InputObject $printer

...或将其简化为单个管道...

Get-CimInstance -ClassName 'Win32_Printer' -Filter 'Name = ''My Printer Name''' `
    | Set-CimInstance -Property @{ EnableBIDI = $false }

...甚至简化为单个cmdlet调用...

Set-CimInstance -Query 'SELECT * FROM Win32_Printer WHERE Name = ''My Printer Name''' -Property @{ EnableBIDI = $false }