gpt4 book ai didi

powershell - PowerShell SNMP查询支持的语言

转载 作者:行者123 更新时间:2023-12-02 23:27:20 25 4
gpt4 key购买 nike

使用GetTree时,在检索打印机的SNMP信息时遇到一些困难。在下面的代码中,我想检索..prtLocalizationLanguage.1.x字段的值。在属性Language中填充“en,fr,it,...”。

$PrinterName = '10.10.10.1', 'Printer2'

Function Get-SNMPInfoHC {
Param (
[String[]]$PrinterName
)
Begin {
$SNMP = New-Object -ComObject olePrn.OleSNMP
}
Process {
Foreach ($P in $PrinterName) {
$SNMP.Open($P,"public",2,3000)
[PSCustomObject][Ordered]@{
Name = $SNMP.Get(".1.3.6.1.2.1.1.5.0")
Model = $SNMP.Get(".1.3.6.1.2.1.25.3.2.1.3.1")
Contact = $SNMP.Get(".1.3.6.1.2.1.1.4.0")
SN = $SNMP.Get(".1.3.6.1.2.1.43.5.1.1.17.1")
Description = $SNMP.Get(".1.3.6.1.2.1.1.1.0")
Location = $SNMP.Get(".1.3.6.1.2.1.1.6.0")
UpTime = [TimeSpan]::FromSeconds(($SNMP.Get(".1.3.6.1.2.1.1.3.0"))/100)
TonerName = $SNMP.Get("43.11.1.1.6.1.1")
Languages = $SNMP.GetTree(".1.3.6.1.2.1.43.7")
}
$SNMP.Close()
}
}
}
Get-SNMPInfoHC $PrinterName
Language部分的输出如下:
$SNMP.GetTree(".1.3.6.1.2.1.43.7.1.1") 
printmib.prtLocalization.prtLocalizationTable.prtLocalizationEntry.prtLocalizationLanguage.1.1
printmib.prtLocalization.prtLocalizationTable.prtLocalizationEntry.prtLocalizationLanguage.1.2
printmib.prtLocalization.prtLocalizationTable.prtLocalizationEntry.prtLocalizationLanguage.1.3
printmib.prtLocalization.prtLocalizationTable.prtLocalizationEntry.prtLocalizationLanguage.1.4
printmib.prtLocalization.prtLocalizationTable.prtLocalizationEntry.prtLocalizationCountry.1.1
printmib.prtLocalization.prtLocalizationTable.prtLocalizationEntry.prtLocalizationCountry.1.2
printmib.prtLocalization.prtLocalizationTable.prtLocalizationEntry.prtLocalizationCountry.1.3
printmib.prtLocalization.prtLocalizationTable.prtLocalizationEntry.prtLocalizationCountry.1.4
printmib.prtLocalization.prtLocalizationTable.prtLocalizationEntry.prtLocalizationCharacterSet.1.1
printmib.prtLocalization.prtLocalizationTable.prtLocalizationEntry.prtLocalizationCharacterSet.1.2
printmib.prtLocalization.prtLocalizationTable.prtLocalizationEntry.prtLocalizationCharacterSet.1.3
printmib.prtLocalization.prtLocalizationTable.prtLocalizationEntry.prtLocalizationCharacterSet.1.4
en
fr
it
de
US
FR
IT
DE
2001
2001
2001
2001

有一种方法只能检索 prtLocalizationLanguage的值吗?

最佳答案

免责声明:我不熟悉您使用的语言或库,但是可以提供有关SNMP的一些建议。

似乎您只是对OID有点困惑。您的代码使用1.3.6.1.2.1.43.7获取子树GetTree。该子树名为prtLocalization,并且是所需变量的父级。 (您可以在this web page上看到整个MIB树)。

您实际使用的变量是1.3.6.1.2.1.43.7.1.1.2,又称prtLocalizationLanguage。它是表prtLocalizationTable的第二列。

表在SNMP中的工作方式是通过将索引附加到OID列来访问该列中的每个值。像这样:

  • 1.3.6.1.2.1.43.7.1.1.2 .1
  • 1.3.6.1.2.1.43.7.1.1.2 .2
  • 1.3.6.1.2.1.43.7.1.1.2 .3

  • 因此,仅获取该列中值的最简单方法是对列标题(即1.3.6.1.2.1.43.7.1.1.2)执行SNMP walk操作。这很可能是通过简单地将OID插入 GetTree()调用来完成的:
    Languages   = $SNMP.GetTree(".1.3.6.1.2.1.43.7.1.1.2")
    en
    fr
    it
    de

    关于powershell - PowerShell SNMP查询支持的语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31294440/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com