【发布时间】:2018-02-12 14:24:27
【问题描述】:
所以我将简短地解释一下环境: 需要在装有 Powershell 4.0 的 Win2k8 服务器上工作
我想使用 SNMP 获取一些信息(打印机类型和打印机 MAC 地址):
$SNMP = new-object -ComObject olePrn.OleSNMP
$SNMP.open($P_IP,"public",2,3000)
$PType = $SNMP.get(".1.3.6.1.2.1.25.3.2.1.3.1")
$PMac = $SNMP.get(".1.3.6.1.2.1.2.2.1.6.2")
echo $PType
echo $PMac
所以,输出看起来像这样(作为示例):
$PType = HP Officejet Pro 251dw 打印机
$PMac = ÓÁÔ*
所以,首先我开始检查是否使用了正确的 OID - 使用 SnmpSoft 公司的命令行工具。在那里,输出看起来不错:
OID= OID=.1.3.6.1.2.1.2.2.1.6.2
Type=OctetString
值= A0 D3 C1 D4 2A 95 ....*.
好的,所以我开始检查,这个 OID 值有什么样的数据类型:它是八位字节字符串。在接下来的步骤中,我开始寻找可能性,如何将这个八位字节字符串值转换为一些可读的十六进制 - 直到现在没有任何进展。我试图以这种方式将其转换为字节:
$bytes = [System.Text.Encoding]::Unicode.GetBytes($PMac)
[System.Text.Encoding]::ASCII.GetString($bytes)
echo $bytes
但是输出让我很困惑
160 0 211 0 193 0 212 0 42 0 34 32
试图解释这个输出但没有成功。 Google 不能再帮助我了,因为我也慢慢不明白如何搜索或搜索什么。
所以我在这里,希望得到一些帮助或建议,我如何将此查询的输出更改为可读的内容。
【问题讨论】:
-
$PMac.GetType()的输出是什么?
标签: powershell snmp printers octetstring