使用Powershell从目录中提取并格式化文件名

使用Powershell从目录中提取并格式化文件名,powershell,Powershell,我试图从PS中的目录中获取文件名,然后使用以下行将其填充到电子邮件中: Get-ChildItem \\sp_dran\BSRP\PROF\SUC\BSRP\Outbound\INTP\*.txt | sort CreationTime -desc | select -f 1 | select Name 我能够抓取名称,但是它带有额外的字符,看起来很邋遢: @{Name=YT-Rixinx-20210331.txt} 有没有一种方法可以只获取名称YT-Rixinx-20210331.txt

我试图从PS中的目录中获取文件名,然后使用以下行将其填充到电子邮件中:

Get-ChildItem \\sp_dran\BSRP\PROF\SUC\BSRP\Outbound\INTP\*.txt | sort CreationTime -desc | select -f 1 | select Name 
我能够抓取名称,但是它带有额外的字符,看起来很邋遢:

@{Name=YT-Rixinx-20210331.txt}

有没有一种方法可以只获取名称YT-Rixinx-20210331.txt,而不在其周围添加额外的字符和符号?

通常,对于简单字符串,最好将字符串用单引号括起来,在需要的地方用双引号括起来,即变量扩展、格式要求等。,这有助于Powershell更具体地提供帮助

这是非常奇怪的,你得到这个

@{Name=YT-Rixinx-20210331.txt}
。。。这是一个数组/集合指示,而仅此

YT-Rixinx-20210331.txt
…因为你只要求一件事。这确实不应该发生在简单的gci\dir\ls命令上。所以,在你的环境中还有一些奇怪的事情

但是,如果这是一个数组,则需要使用switch/property

您也可以轻松地完成这项工作,从而完全不需要选择对象


使用“选择对象-扩展属性名称”而不是“选择名称”。顺便说一句:这是PowerShell第1课的基础知识你可以在10秒内通过谷歌搜索得到这些信息。自学意味着在提问之前做适当的研究,你在提问之前是否诚实地这样做了?在发布之前,您是否至少阅读了Get ChildItem和Select Object的MS文档?在我看来,在询问之前不这样做意味着不尊重试图帮助你的社区:奥拉夫/圣地亚哥给你的都是正确的分数。所以,他们不是真的很粗鲁,而是用一句古老的格言,给一个人一条鱼,他会吃一天。教一个人钓鱼,他们就会吃一辈子。我做这件事已经40多年了,总是花时间向任何人/任何时候学习。一个人可以向任何人学习,无论其技能水平如何;然而,只有在他们愿意的情况下。没有人知道一切/永远不会知道,但关闭提供指导/教化的人员并不谨慎。这里的一切都是关于社区回馈/分享/指导等,而不仅仅是一个给我答案的商店。
# Get specifics for a module, cmdlet, or function
(Get-Command -Name Select-Object).Parameters
(Get-Command -Name Select-Object).Parameters.Keys
# Results
<#
InputObject
Property
ExcludeProperty
ExpandProperty
Unique
Last
First
Skip
SkipLast
Wait
Index
Verbose
Debug
ErrorAction
WarningAction
InformationAction
ErrorVariable
WarningVariable
InformationVariable
OutVariable
OutBuffer
PipelineVariable
#>
Get-help -Name Select-Object -Examples
Get-Help -Name Select-Object -Detailed
Get-help -Name Select-Object -Full
Get-help -Name Select-Object -Online
(Get-ChildItem -Path 'D:\Temp\*.txt' | 
Sort-Object -Property CreationTime -Descending | 
Select-Object -First 1).Name
(Get-ChildItem -Path 'D:\Temp\*.txt' | 
Sort-Object -Property CreationTime -Descending).Name[0]