我正在尝试一个库存脚本,我正在获取子网络详细信息并将其传输到CSV文件。但输出为System.Object[]
而不是IP地址。
我希望IP地址以原始格式传输,例如255.255.0.0
。
$nmconfiginfo = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $s
Add-Member -InputObject $infoObject -MemberType NoteProperty -Name "IP Subnet" -Value $nmconfiginfo.IPSubnet
答案 0 :(得分:3)
IPSubnet
属性包含所有返回的接口的所有IP子网的集合。例如,我的价值是:
255.255.255.0
64
255.255.252.0
64
255.255.255.0
64
255.255.240.0
64
如果您想要返回这个完整值,可以通过管道到Out-String
来实现:
Add-Member -inputObject $infoObject -memberType NoteProperty -name "IP Subnet" -value ($nmconfiginfo.IPSubnet | Out-String)
但是,如果您想要特定接口的子网值,则需要先将$nmconfiginfo
集合缩小到该特定接口,例如:
$nmconfiginfo = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $s | Where-Object {$_.Description -eq 'Name of the interface you want'}
请注意,描述不一定是唯一字段(因此您可能仍会获得多个结果)。您可以考虑按其他字段进行过滤,例如IPAddress
。
答案 1 :(得分:2)
IPSubnet
是一个数组。将这个项放入单个项目的一种方法是从各个值创建一个字符串。例如,替换:
-Value $nmconfiginfo.IPSubnet
使用:
-Value (($nmconfiginfo.IPSubnet | Where-Object {$_ -match "(\d{1,3}.){3}\d{1,3}"}) -join ';')
这将使用字符串填充属性,其中每个子网用分号分隔,省略任何无效的条目。