PowerShell数组遍历与Lambda等效功能实现问题咨询
PowerShell 实现对象数组遍历与Lambda等效功能
一、正确定义并遍历系统对象列表
你提供的语法并非PowerShell的标准格式,以下是正确的实现方式:
# 创建包含系统信息的对象数组 $systemlist = @( [PSCustomObject]@{ Navn = "SystemA" Uri = "" }, [PSCustomObject]@{ Navn = "SystemB" Uri = "" } ) # 遍历数组,输出每个系统的名称和URI foreach ($system in $systemlist) { # 格式化输出具体属性 Write-Host "名称: $($system.Navn) | URI: $($system.Uri)" # 若直接输出对象,PowerShell会自动以表格/列表形式展示所有属性 # Write-Output $system }
二、PowerShell中的Lambda表达式等效实现
PowerShell通过**脚本块(Script Block)**实现类似Lambda的功能,脚本块用{}包裹,其中$_代表当前处理的对象。以下是几种常见用法:
1. 筛选指定系统并获取其URI
# 筛选Navn为SystemA的对象,提取Uri属性 $systemAUri = $systemlist | Where-Object { $_.Navn -eq "SystemA" } | Select-Object -ExpandProperty Uri Write-Output $systemAUri
2. 更简洁的方法语法调用
PowerShell的集合对象支持直接调用.Where()方法,无需管道:
$systemAUri = ($systemlist.Where({ $_.Navn -eq "SystemA" })).Uri
3. 批量处理对象(类似Lambda遍历)
用ForEach-Object结合脚本块,批量处理每个元素:
$systemlist | ForEach-Object { Write-Host "正在处理系统: $($_.Navn)" # 可在此添加自定义业务逻辑 }
内容的提问来源于stack exchange,提问作者codingjoe
相关产品推荐
相关产品推荐

