使用PowerShell通过SNMP设置打印机主机名及相关技术问询
解答:SNMP配置打印机主机名与IP模式OID问题
一、主机名设置部分设备无响应的排查方向
1. SNMP权限与版本匹配
不同品牌打印机的SNMP默认配置差异极大:
- 部分Xerox设备仅开启SNMPv1,且需在Web界面手动将
private社区字符串设为可写; - Zebra工业打印机默认禁用SNMP写权限,需在面板或Web端开启
SNMP Configuration Access; - HP部分机型要求SNMPv2c执行Set操作,你的SnmpSharpNet代码当前用了SNMPv1,可尝试改为
[SnmpSharpNet.SnmpVersion]::Ver2测试。
2. 数据类型与编码匹配
你尝试了字符串和ASCII字节数组两种方式,但部分设备要求特定编码:
- 用Paessler SNMP Tester做Set测试:选择
Octet String类型,分别用ASCII、UTF-8编码填入主机名,若工具能成功设置,再对应调整代码的编码方式(比如替换ASCII为UTF8); - 确认OID的数据类型:有些打印机的主机名OID可能要求
DisplayString而非普通Octet String,需严格匹配。
3. 设备配置锁定
- HP部分机型需先通过Web界面进入管理员模式,解除"配置锁定"才能允许SNMP修改;
- Zebra ZPL打印机可能要求先启用
Allow SNMP Changes参数,默认是关闭状态。
4. 代码细节优化
- olePrn.OleSNMP:捕获Set方法的返回值并输出,比如
$result = $SNMP.Set(...),查看是否有隐性错误码; - SnmpSharpNet:添加结果日志,比如
$response = $Snmp.Set([SnmpSharpNet.SnmpVersion]::Ver2,$pdu); Write-Host $response,确认是否收到设备的响应Pdu。
二、查找IP配置模式(静态/DHCP)的Integer类型OID
1. 官方MIB文件定位
各品牌官方MIB库是最可靠的来源:
- HP:在
HP-LASERJET-MIB中,hpNetworkConfigDhcpEnable(OID:.1.3.6.1.4.1.11.2.3.9.1.1.13.0),1=启用DHCP,0=静态; - Xerox:
XEROX-GENERAL-MIB中的xeroxNetIPv4InterfaceDHCPEnable(OID:.1.3.6.1.4.1.253.8.53.12.1.1.3),1=DHCP,0=静态; - Zebra:
ZEBRA-NETWORK-MIB中的zbrNetIfDhcpEnabled(OID:.1.3.6.1.4.1.10642.1.2.1.1.4),1=启用,0=禁用。
2. SNMP遍历排查
用Paessler SNMP Tester或snmpwalk工具遍历目标分支:
- 通用IP配置分支:
snmpwalk -v2c -c private [打印机IP] .1.3.6.1.2.1.4(IP-MIB),查找含dhcp关键字的Integer节点; - 品牌私有分支:遍历HP的
.1.3.6.1.4.1.11、Xerox的.1.3.6.1.4.1.253、Zebra的.1.3.6.1.4.1.10642,筛选Integer类型的节点,对比DHCP/静态模式下的数值变化。
3. 动态对比验证
在打印机Web界面切换IP模式,同时用SNMP工具实时查询可疑OID,观察数值变化——比如切换到DHCP时数值变为1,切换到静态时变为0,即可确认目标OID。
内容的提问来源于stack exchange,提问作者Koobah84
相关产品推荐
相关产品推荐

