powershell ip address csv文件

时间:2012-01-24 16:19:19

标签: csv powershell networking ip

我正在尝试将只有实时适配器的内容转储到csv文件中,以便以后导入。

问题是使用$ _。下面。

$colNicConfigs = Get-WMIObject Win32_NetworkAdapterConfiguration | where { $_.IPEnabled -eq "TRUE" }

#loop over each adapter
foreach ($objNicConfig in $colNicConfigs) 
{ 
$objnic=Get-WMIObject Win32_NetworkAdapter | where {$_.deviceID -eq "$objNicConfig.Index" }
#$strname=$objnicconfig.description.split(":")[0]
#replace strname above when testing against actual server since no dot1q defined on my wks
$strname="MGMT:Something"
$connid=$_.NetworkConnectionID
$ipaddr=$_.IPAddress(0)
$ipsm=$_.IPSubnet(0)
$dg=$_.DefaultIPGateway

}
# create dictionary entries
$report = @()
$report += New-Object psobject -Property @{Name=$strname;ConnID=$connid;IP=$ipaddr;SM=$ipsm;DG=$dg}
$report | export-csv .\nic.csv

1 个答案:

答案 0 :(得分:1)

您最初的问题是在foreach循环中使用“$ underscore”。如果您想引用$objNicConfig的属性,您将使用它来代替“$ underscore”。因此,您可以使用$connid=$_.networkConnectionID

代替$connid=$objNicConfig.networkConnectionID

同样IpAddress and IPSubnet不是它们属性的方法,因此删除(0)将返回写入信息。如果您的NIC有多个IP,我无法证明这将显示如何,因为我的机器没有,我正在测试。

我看到的其他事情是你需要在那里嵌套另一个foreach循环以引用两个WMI名称空间......所以类似于:


$colNicConfigs = Get-WMIObject Win32_NetworkAdapterConfiguration | where { $_.IPEnabled -eq "TRUE" }

foreach ($objNicConfig in $colNicConfigs) 
{
    foreach($objnic in (gwmi win32_networkadapter | where {$_.DeviceID -eq $objNicConfig.Index}))
    {
        $strName = "MGMT:Something"
        $objNicConfig.NetworkConnectionID
        $objNicConfig.IpAddress
        $objNic.IPSubnet
        $objNicConfig.DefaultIPGateway
    }
}

以上代码是我用来在计算机的NIC上返回信息的代码。

现在使用“词典条目”部分。您将无法以添加foreach的方式引用psobject循环中的变量。您只会捕获foreach循环代码中找到的最后一个。如果您想先在foreach循环中收集信息,然后在您的脚本中使用它,我建议您查看hash tables