第一次尝试使用PowerShell,所以我接受这可能超出了初学者的水平。
目标:根据snmpget.exe收集的数据创建CSV(语法" snmpget.exe -IPAddress -OID")。 CSV应该由3列组成,这些列表示snmpget.exe收集的3个不同的数据(3个OID)和按IP地址划分的行。
所以我已经获得了我的IP列表,而且我已经获得了我的OID。我需要针对可执行文件中的所有3个OID值运行foreach IP。
$AddressList=@("192.168.0.1","192.168.0.2","192.168.0.3")
$OID1 = ForEach ($Address in AddressList) {snmpget.exe -r:"$Address" -o:1}
$OID2 = ForEach ($Address in AddressList) {snmpget.exe -r:"$Address" -o:2}
$OID3 = ForEach ($Address in AddressList) {snmpget.exe -r:"$Address" -o:3}
我的第一个问题是尝试只导出$ OID1。
$OID1 | Export-CSV
没有完全正常工作,因为唯一的字符串属性是长度,所以我实际上并没有得到我想要的值。然后我尝试了Out-File。这有效,但我不确定如何将$ OID1,$ OID2和$ OID3合并到带有标题的单个CSV文件中。
答案 0 :(得分:0)
我的意思是,如果你只是想知道如何嵌套循环,你可以这样做:
$AddressList = "192.168.0.1","192.168.0.2","192.168.0.3";
$OIDList = '1','2','3';
$AddressList | ForEach-Object ($Address in $AddressList) {
$Address = $_;
$OIDList | ForEach-Object {
snmpget.exe -r:"$Address" -o:"$_"
}
} | Export-Csv -NoTypeInformation -Path C:\Export.csv
然而,由于snmpget.exe
没有输出Export-Csv
正在寻找的任何对象,因此这将是超级无用的。我希望Export-Csv
抱怨它没有标题。你可以用Set-Content -Path C:\Export.txt
或Out-File -FilePath C:\Export.txt
而不是Export-Csv
写出一个文本文件,但这只是将输出转储到文本文件中。
我的网络上没有任何支持SNMP的设备,因此我不知道snmpget.exe
命令的输出是什么样的。在不知道snmpget.exe
的输出的情况下,您的问题几乎无法回答。
您可能需要尝试this module中的Get-SNMP
命令或类似于图库中the other SNMP modules之一的命令。这将输出对象而不是普通字符串,这将更容易操作。