powershell - 选择/映射 Powershell 数组的每一项到新数组

标签 powershell higher-order-functions array-map

我在 Powershell 中有一个文件名数组,我想为每个文件名添加一个路径,并在一个新数组中获取结果。

在 C# 中,我可以使用 Linq 来做到这一点......

var files = new string[] { "file1.txt", "file2.txt" };
var path = "c:\temp\";
var filesWithPath = files.Select(f => path + f).ToArray();

但是在 Powershell 中执行此操作的惯用方法是什么?看起来我可以使用 foreach 语法,但我认为必须有一种更简洁、更实用的方法来做到这一点。

最佳答案

Powershell 中的数组使用 @() 声明句法。 %foreach-object 的简写.让我们声明一个包含所有文件名的数组,并使用 foreach 循环遍历它。 join-path将路径和子路径合并为一条路径。

$files = @("file1.txt", "file2.txt")
$pFiles = $files | % {join-path "c:\temp" $_ }
$pFiles

输出:
c:\temp\file1.txt
c:\temp\file2.txt

注意:如果输入由单个元素组成,foreach 将不会返回一个集合。如果需要数组,请使用显式类型或包装结果。像这样,
[array]$pFiles = $files | % {join-path "c:\temp" $_ }
$pFiles = @($files | % {join-path "c:\temp" $_ })

关于powershell - 选择/映射 Powershell 数组的每一项到新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8908879/

相关文章:

Powershell Core + Pester - 将测试与 src 分开

azure - 如何在没有 NSG 的情况下创建 Azure VM?

powershell - 为什么括号会改变迭代类型?

common-lisp 高阶逻辑或函数

scala - Scala中的zipWith(映射多个Seq)

jquery - 如何检查字符串是否与给定的模式匹配?

windows - pdftk update_info 命令发出我不明白的警告

scala - scala 是否忽略函数签名中的类型?

php - array_map 回调问题

php - Array_Map 使用多个 native 回调?