Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
支持的语言的PowerShell SNMP查询_Powershell_Snmp_Printers - Fatal编程技术网

支持的语言的PowerShell SNMP查询

支持的语言的PowerShell SNMP查询,powershell,snmp,printers,Powershell,Snmp,Printers,在使用GetTree时,检索打印机的SNMP信息有些困难。在下面的代码中,我希望检索字段.prtLocalizationLanguage.1.x的值。在属性语言中填充,如“en,fr,it,…” $PrinterName = '10.10.10.1', 'Printer2' Function Get-SNMPInfoHC { Param ( [String[]]$PrinterName ) Begin { $SNMP = New-Obje

在使用
GetTree
时,检索打印机的SNMP信息有些困难。在下面的代码中,我希望检索字段
.prtLocalizationLanguage.1.x
的值。在属性
语言中填充,如“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
语言
部分的输出如下所示:

$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弄糊涂了。您的代码使用
GetTree
获取子树
1.3.6.1.2.1.43.7
。该子树名为
prtLocalization
,是所需变量的父级。(您可以在中看到打印的整个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