Я не понимаю, что я делаю неправильно в синтаксисе метода ForEach списка?
PS D:\ntt> $nicInfo.IpConfigurations.Count
2
PS D:\ntt> $nicInfo.IpConfigurations[0]
PrivateIpAddressVersion Name Primary PrivateIpAddress PrivateIpAllocationMethod Subnet Name PublicIpAddress Name ProvisioningState
----------------------- ---- ------- ---------------- ------------------------- ----------- -------------------- -----------------
IPv4 ipconfig1 True 10.233.0.4 Dynamic Succeeded
PS D:\ntt> $nicInfo.IpConfigurations.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True List`1 System.Object
PS D:\ntt> $nicInfo.IpConfigurations.ForEach({$_})
PS D:\ntt>
Как вы создали объект? Вы уверены, что этот метод существует? Как насчет использования стандартного цикла foreach?
Этот объект создается путем возврата другого командлета. Трубопровод к
Foreach-Object
работает нормальноэто похоже на баг! [ухмылка] метод
.Where
работает. ни$_
, ни$PSItem
не работают в.ForEach()
, когда типом коллекции является Generic.List. как интересно... использованиеWrite-Host
отправляет вывод на хост, но не$_
. использованиеWrite-Output
вообще ничего не показывает. это похоже на сбой в обработке выходного потока.Это работает, хотя
...GetEnumerator().Foreach()
Чего вы ожидаете?
ForEach
выполняется из-за побочных эффектов, а у вас, похоже, их нет. Что делает$nicInfo.IpConfigurations.ForEach({param($i) write-host "$i"})
?Я хочу выполнить некоторые манипуляции с данными в операторе foreach, пример просто и пример.
У @GregorySuvalian
List<T>
есть собственный методForEach
. Из-за этого он предпочтительнее, чемForEach
PowerShell добавляет в коллекции.