所以我将简要解释一下环境:需要在带有 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
类型=八位字符串
值 = 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
试图解释这个输出没有任何成功。谷歌不能再帮助我了,因为我也慢慢地不明白如何搜索或搜索什么。
所以我在这里并希望得到一些帮助或建议,我如何将此查询的输出更改为可读的内容。