PowerShell:Select 自定义表达式并在一次操作中展开
PowerShell: Select custom expression and expand in one operation
我可以做类似
的事情
ls . `
| select @{ Name="Dir"; Expression = { $_ | Split-Path } } `
| select -ExpandProperty Dir
将自定义表达式(在本例中为 $_ | Split-Path
)select 转换为简单的值数组。
有没有办法将两个 select 语句合并为一个,仍然产生相同的结果?
你想做什么?仅使用 ls
/Get-ChildItem
和 Split-Path
即可获得相同的结果。不确定您是否需要 Microsoft.PowerShell.Core\FileSystem::
部分。
PS C:\Path\To\Dir> Get-ChildItem | Split-Path
Microsoft.PowerShell.Core\FileSystem::C:\Path\To\Dir
Microsoft.PowerShell.Core\FileSystem::C:\Path\To\Dir
Microsoft.PowerShell.Core\FileSystem::C:\Path\To\Dir
PS C:\Path\To\Dir> (Get-ChildItem).FullName | Split-Path
C:\Path\To\Dir
C:\Path\To\Dir
C:\Path\To\Dir
编辑
假设nuget list <my-package>
输出一个字符串数组,你可以使用-replace
和正则表达式($
来匹配字符串结尾)来操作它并得到一个结果数组。
$((nuget list <my-package>).Replace(" ",",") -replace "$",".nupkg")
我认为 OP 正在寻找 ForEach-Object
(MSDN),它对输入对象集合中的每个项目执行操作。它类似于其他语言中的 map
或 Select
操作。
所以代替:
ls . `
| select @{ Name="Dir"; Expression = { $_ | Split-Path } } `
| select -ExpandProperty Dir
你想要:
ls . `
| ForEach-Object { $_ | Split-Path }
您也可以将 ForEach-Object
替换为 %
。但对于新的 PowerShell 用户来说,它的可读性和可搜索性较差:
ls . `
| % { $_ | Split-Path }
我可以做类似
的事情ls . `
| select @{ Name="Dir"; Expression = { $_ | Split-Path } } `
| select -ExpandProperty Dir
将自定义表达式(在本例中为 $_ | Split-Path
)select 转换为简单的值数组。
有没有办法将两个 select 语句合并为一个,仍然产生相同的结果?
你想做什么?仅使用 ls
/Get-ChildItem
和 Split-Path
即可获得相同的结果。不确定您是否需要 Microsoft.PowerShell.Core\FileSystem::
部分。
PS C:\Path\To\Dir> Get-ChildItem | Split-Path
Microsoft.PowerShell.Core\FileSystem::C:\Path\To\Dir
Microsoft.PowerShell.Core\FileSystem::C:\Path\To\Dir
Microsoft.PowerShell.Core\FileSystem::C:\Path\To\Dir
PS C:\Path\To\Dir> (Get-ChildItem).FullName | Split-Path
C:\Path\To\Dir
C:\Path\To\Dir
C:\Path\To\Dir
编辑
假设nuget list <my-package>
输出一个字符串数组,你可以使用-replace
和正则表达式($
来匹配字符串结尾)来操作它并得到一个结果数组。
$((nuget list <my-package>).Replace(" ",",") -replace "$",".nupkg")
我认为 OP 正在寻找 ForEach-Object
(MSDN),它对输入对象集合中的每个项目执行操作。它类似于其他语言中的 map
或 Select
操作。
所以代替:
ls . `
| select @{ Name="Dir"; Expression = { $_ | Split-Path } } `
| select -ExpandProperty Dir
你想要:
ls . `
| ForEach-Object { $_ | Split-Path }
您也可以将 ForEach-Object
替换为 %
。但对于新的 PowerShell 用户来说,它的可读性和可搜索性较差:
ls . `
| % { $_ | Split-Path }