如何禁用打印机双向通信?PowerShell操作遇EnableBIDI属性未找到问题
禁用打印机双向通信的两种方法(含PowerShell问题修复)
我来帮你搞定这两个问题,尤其是你遇到的PowerShell操作时EnableBIDI属性找不到的坑👇
一、图形界面操作步骤
如果你偏好可视化设置,按以下步骤来:
- 打开「控制面板」→「设备和打印机」(Win10/11也可以从「设置」→「蓝牙和设备」→「打印机和扫描仪」进入,找到对应打印机后点「打印机属性」)
- 右键目标打印机,选择**「打印机属性」**(别选普通的「属性」,那是另一回事)
- 切换到「端口」标签页
- 找到当前打印机正在使用的端口,取消勾选下方的「启用双向支持」
- 点击「确定」保存设置就搞定了
二、PowerShell命令行方法(解决属性找不到的问题)
你遇到的问题很常见:明明能看到EnableBIDI属性,但修改时提示找不到。这是因为打印机对象的EnableBIDI是只读的,真正控制双向通信的是打印机端口的属性,得换个WMI类来操作:
步骤1:先获取目标打印机的端口名称
把下面命令里的"你的打印机名称"换成你实际的打印机名字(可以在设备和打印机里看到):
$printerName = "你的打印机名称" $printer = Get-WmiObject -Class Win32_Printer | Where-Object {$_.Name -eq $printerName} $portName = $printer.PortName
步骤2:修改对应端口的双向通信设置
通过Win32_TcpIpPrinterPort类找到端口,修改并保存:
$port = Get-WmiObject -Class Win32_TcpIpPrinterPort | Where-Object {$_.Name -eq $portName} # 禁用双向通信 $port.EnableBIDI = $false # 提交更改(必须管理员权限运行PowerShell!) $port.Put()
验证修改是否生效
运行下面的命令,就能看到EnableBIDI已经变成False了:
Get-WmiObject -Class Win32_TcpIpPrinterPort | Where-Object {$_.Name -eq $portName} | Select-Object Name, EnableBIDI
为啥之前会报错?
简单说:
- Win32_Printer里的EnableBIDI属性只是展示状态,不能直接修改
- 必须通过管理端口的
Win32_TcpIpPrinterPort类来操作,而且一定要用管理员身份启动PowerShell,否则Put()会因为权限不足失败
内容的提问来源于stack exchange,提问作者Tsukasa
相关产品推荐
相关产品推荐

