我正在使用net-snmp擴展功能,以便能夠在查詢特定的SNMP oid時運行powershell腳本。做參數屬性以某種方式更改PowerShell腳本輸出?
snmpd被配置爲運行帶有一些參數的get-storageinfo.ps1腳本。
腳本被調用像這樣由net-snmp代理:
& c:\scripting\get-storageinfo.ps1 -name somedevicename -detaillevel 2 -oid oidstring
然而,事情打破當我添加參數屬性或列出CmdletBinding(或兩者)在我的GET-storageinfo我的參數定義。 ps1腳本。 我不明白爲什麼。 我在我的腳本的最頂端(實際上有一些評論後)。
[CmdletBinding()]
Param(
[string]$name,
[string]$detaillevel
[string]$oid
)
或本,同樣的問題
Param(
[Parameter(Mandatory=$True)][string]$name,
[string]$detaillevel
[string]$oid
)
這在某種程度上打破了我的SNMPD功能。當讀取配置的OID,我得到: 「沒有這樣的例子目前存在於這個OID」
以下(且僅此)的作品完美,沒有列出CmdletBinding和參數屬性都:
Param(
[string]$name,
[string]$detaillevel
[string]$oid
)
這將返回到net-snmp的值,就像它應該做的那樣。 Net-SNMP(snmpd)非常適合運行腳本並返回值,而不使用屬性/ cmdlet綁定來使用腳本。正因爲如此,我知道調用程序(snmpd)正確地傳遞了參數。問題必須特定於屬性或cmdlet綁定。
這兩個聲明中有關輸出到net-snmp等外部程序的可能區別是什麼?我無法弄清楚差異。
UPDATE 我已經恢復回snmpd.conf的「extend」命令,而不是「pass」commando。 pass命令沒有一致的結果。我想我不明白它的用法。 如前所述,extend命令沒有問題。這有點奇怪,但我會繼續「延長」。
你能不能給,你下載的net-snmp擴展功能的鏈接,和NET-SNMP Win32版本? – JPBlanc
[來自此URL](http://sourceforge.net/projects/net-snmp/files/net-snmp%20binaries/5.7-binaries/)我已經下載了net-snmp-5.7.0-1.x86用於安裝Net-SNMP的.exe包 – JayST
$ name包含OID?運行snmpd的計算機上安裝了哪個版本的PowerShell?您是否注意到32位服務啓動32位PowerShell版本的事實? – JPBlanc