我可以做类似
的事情$_ | Split-Path
将自定义表达式(在本例中为sendToServer
)选择为一个简单的值数组。
有没有办法将两个select语句合并为一个,仍能产生相同的结果?
答案 0 :(得分:0)
你想做什么?只有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")
答案 1 :(得分:0)
我认为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 }