在打印机上测试 SNMP 社区字符串
Test SNMP Community String on printers
在我工作的公司,我们有不同的 SNMP Community Names
用于打印机。它们中的大多数具有标准值 public
并且完全可读,其他的具有其他值,例如 foo
或 bar
.
问题是当连接部分失败时,我的 PowerShell 代码没有抛出错误。所以我可以试试另一个 SNMP Community Names
.
理想情况下,如果使用所有已知密码连接失败,我希望它在 Catch
子句中结束,这样我就知道我们无法连接。
代码:
$CommunityName = 'public' # public foo bar
$P = 'PrinterPort'
$SNMP = New-Object -ComObject olePrn.OleSNMP
Try {
# There's no error thrown when it can't connect here:
$SNMP.Open($P,$CommunityName,2,3000)
}
Catch {
$Global:Error.Remove($Global:Error[0])
[PSCustomObject][Ordered]@{
SNMP_PortHostAddress = $P
SNMP_Status = "SNMP Connection failed"
}
}
$SNMP.Get('.1.3.6.1.2.1.25.3.2.1.3.1')
$SNMP.Close()
显然 $SNMP.Get
命令会抛出一个错误,所以它工作正常:
$CommunityName = 'public' # public foo bar
$P = 'PrinterPort'
$SNMP = New-Object -ComObject olePrn.OleSNMP
Try {
$SNMP.Open($P,$CommunityName,2,3000)
# Check if connection is successfull:
$SNMP.Get('.1.3.6.1.2.1.1.5.0') | Out-Null
}
Catch {
$Global:Error.Remove($Global:Error[0])
[PSCustomObject][Ordered]@{
SNMP_PortHostAddress = $P
SNMP_Status = "SNMP Connection failed"
}
}
在我工作的公司,我们有不同的 SNMP Community Names
用于打印机。它们中的大多数具有标准值 public
并且完全可读,其他的具有其他值,例如 foo
或 bar
.
问题是当连接部分失败时,我的 PowerShell 代码没有抛出错误。所以我可以试试另一个 SNMP Community Names
.
理想情况下,如果使用所有已知密码连接失败,我希望它在 Catch
子句中结束,这样我就知道我们无法连接。
代码:
$CommunityName = 'public' # public foo bar
$P = 'PrinterPort'
$SNMP = New-Object -ComObject olePrn.OleSNMP
Try {
# There's no error thrown when it can't connect here:
$SNMP.Open($P,$CommunityName,2,3000)
}
Catch {
$Global:Error.Remove($Global:Error[0])
[PSCustomObject][Ordered]@{
SNMP_PortHostAddress = $P
SNMP_Status = "SNMP Connection failed"
}
}
$SNMP.Get('.1.3.6.1.2.1.25.3.2.1.3.1')
$SNMP.Close()
显然 $SNMP.Get
命令会抛出一个错误,所以它工作正常:
$CommunityName = 'public' # public foo bar
$P = 'PrinterPort'
$SNMP = New-Object -ComObject olePrn.OleSNMP
Try {
$SNMP.Open($P,$CommunityName,2,3000)
# Check if connection is successfull:
$SNMP.Get('.1.3.6.1.2.1.1.5.0') | Out-Null
}
Catch {
$Global:Error.Remove($Global:Error[0])
[PSCustomObject][Ordered]@{
SNMP_PortHostAddress = $P
SNMP_Status = "SNMP Connection failed"
}
}