在PowerShell中获取管道的最后一个元素

doz*_*inc 10 powershell pipeline

这可能很奇怪,但请留在我身边.我想只将管道结果的最后一个元素分配给变量.我知道如何在"常规"代码中执行此操作,但因为这必须是一个单行程序.

更具体地说,我对从FTP请求获取结果时获取文件扩展名感兴趣ListDirectoryDetails.

由于这是在字符串扩展中完成的,我无法弄清楚正确的代码.

目前我已经得到了最后3个,但这真是令人讨厌.

__PRE__

我的想法是做类似的事情

__PRE__

也就是说,遍历所有,但只取出我正在看的元素是输入数组的最后一个元素.

我错过了什么?

Rom*_*min 21

几种方法:

$name = 'c:\temp\aaa.bbb.ccc'

# way 1
$name.Split('.') | Select-Object -Last 1

# way 2
[System.IO.Path]::GetExtension($name)

# or if the dot is not needed
[System.IO.Path]::GetExtension($name).TrimStart('.')
Run Code Online (Sandbox Code Playgroud)


Kei*_*ill 9

一般来说,获取管道中的最后一个元素将使用Select -Last 1上面的罗马建议.但是,如果输入是一个简单的数组,另一种更简单的方法是使用数组切片,例如:

PS> $name = "c:\temp\aaa.bbb.txt"
PS> $name.Split('.')[-1]
txt
Run Code Online (Sandbox Code Playgroud)

您是否有意获得文件的扩展名或基本名称?因为该Type属性似乎已包含文件名的扩展名.