0

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

运行时可以看到EnableBIDI

get-WmiObject -class Win32_printer | fl *

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

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

1 回答 1

0

您正在混合来自两个不同 WMI 类的属性。 从命名空间中操作未记录类的Set-PrinterProperty实例,该命名空间的属性与上一个命令中的类不同。MSFT_PrinterPropertyroot/standardcimv2Win32_Printer

相反,操作所需的Win32_Printer类实例,因为它具有您想要的属性,然后调用Put()以提交更改。当以海拔运行时,这对我有用:

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

使用较新的CimCmdlets模块Get-CimInstance,您可以使用和Set-CimInstancecmdlet以类似的方式进行更改...

$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 }
于 2020-05-11T22:48:02.447 回答