我尝试使用此脚本将机器的IP地址,MAC地址和DefaultIPGateway信息从Win32_NetworkAdapterConfiguration对象提取到名为NetworkAdapterConfiguration.csv的导出CSV文件中:
$StrComputer = $env:computername
$NetAdConfig = gwmi Win32_NetworkAdapterConfiguration -Comp $StrComputer
$NetAdConfig | Select-Object IPAddress,MACAddress,DefaultIPGateway | Export-Csv -Path C:\CSVFolder\NetworkAdapterConfiguration.csv -Encoding ascii -NoTypeInformation
当我查看此CSV时,我得到" System.String []"应显示IP和DefaultIPGateway值的位置。我假设这些信息被表示为数组,这就是我看到System.String []视图的原因,但我对Powershell的经验不多。非常感谢任何帮助,建议和参考。
答案 0 :(得分:2)
IPAddress和DefaultIPGateway属性是数组。如果您确定您的计算机只有一个IP地址和默认网关,则可以执行以下操作:
$computer = $ENV:COMPUTERNAME
get-wmiobject Win32_NetworkAdapterConfiguration -filter "IPEnabled=TRUE" -computername $computer | foreach-object {
new-object PSObject -property @{
"Computer" = $computer
"MACAddress" = $_.MACAddress
"IPAddress" = $_.IPAddress[0]
"DefaultIPGateway" = $_.DefaultIPGateway[0]
} | select-object Computer,MACAddress,IPAddress,DefaultIPGateway
}
以下是使用Select-Object
的另一种方式:
$computer = $ENV:COMPUTERNAME
get-wmiobject Win32_NetworkAdapterConfiguration -filter "IPEnabled=TRUE" -computername $computer | foreach-object {
$_ | select-object `
@{Name="ComputerName"; Expression={$_.__SERVER}},
@{Name="MACAddress"; Expression={$_.MACAddress}},
@{Name="IPAddress"; Expression={$_.IPAddress[0]}},
@{Name="DefaultIPGateway"; Expression={$_.DefaultIPGateway[0]}}
}
答案 1 :(得分:1)
我有一个名为Convert-OutputForCSV的函数可以帮助删除你看到的字符串[]问题。您可以执行类似这样的操作,将数组扩展为更易读的属性。
$StrComputer = $env:computername
$NetAdConfig = gwmi Win32_NetworkAdapterConfiguration -Comp $StrComputer
$NetAdConfig | Select-Object IPAddress,MACAddress,DefaultIPGateway |
Convert-OutputForCSV |
Export-Csv -Path C:\CSVFolder\NetworkAdapterConfiguration.csv -Encoding ascii -NoTypeInformation