Powershell预示着csv

时间:2018-01-10 00:49:50

标签: powershell csv snmp

第一次尝试使用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文件中。

1 个答案:

答案 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.txtOut-File -FilePath C:\Export.txt而不是Export-Csv写出一个文本文件,但这只是将输出转储到文本文件中。

我的网络上没有任何支持SNMP的设备,因此我不知道snmpget.exe命令的输出是什么样的。在不知道snmpget.exe的输出的情况下,您的问题几乎无法回答。

您可能需要尝试this module中的Get-SNMP命令或类似于图库中the other SNMP modules之一的命令。这将输出对象而不是普通字符串,这将更容易操作。