Ваши начальные проблемы - использование $ underscore в вашем цикле foreach
. Если вы хотите сослаться на свойства $objNicConfig
, вы будете использовать его вместо "подчеркивания $". Так что вместо $connid=$_.networkConnectionID
вы бы использовали $connid=$objNicConfig.networkConnectionID
Также IpAddress and IPSubnet
не являются методами, они являются свойствами, поэтому удаление (0) вернет информацию о записи. Если ваша сетевая карта имеет несколько 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
}
}
Приведенный выше код используется для возврата информации на сетевые карты моего компьютера.
Теперь с разделом «словарные записи». Вы не сможете ссылаться на переменные в цикле foreach
, добавляя psobject
. Вы только захватите последний найденный в коде цикла foreach
. Если вы хотите сначала собрать информацию в цикле foreach
, а затем использовать ее позже в своем сценарии, я бы посоветовал посмотреть на hash tables
.