如何使用Get-ChildItem获取特定文件

时间:2018-02-20 16:41:45

标签: powershell get-childitem

我正在尝试使用今天的文件名中的所有文件。但是,当我运行它时,我收到以下错误:

#Share location
$source = "U:\Data\*"
#Sharepoint file location
$prefix = "file_name_"

#Date Info
$date = get-date -uformat "%Y-%m-%d" | Out-String

$file = $prefix + $date 

Get-ChildItem -File -path $source -Filter $file*
  

Get-ChildItem:路径中的非法字符。在行:2 char:1   + Get-ChildItem -File -path $ source -Filter $ file *

任何帮助将不胜感激。我在过滤器中使用$file*,因为文件扩展名可能不同。

2 个答案:

答案 0 :(得分:2)

您的问题是使用| Out-String ,这不仅在您的情况下是不必要的,而且附加一个尾随换行符,这是导致问题的原因

仅使用:

$date = get-date -uformat "%Y-%m-%d"  # Do NOT use ... | Out-String

get-date -uformat "%Y-%m-%d"直接返回[string]

可选的问题排查提示

验证get-date -uformat "%Y-%m-%d"输出[string]个实例:

PS> (get-date -uformat "%Y-%m-%d").GetType().FullName
System.String

验证... | Out-String是否附加换行符:

PS> (get-date -uformat "%Y-%m-%d" | Out-String).EndsWith("`n")
True

答案 1 :(得分:0)

试试这个:

#Share location
 $source = "U:\Data\*"
#Sharepoint file location
 $prefix = "file_name_"

#Date Info
 $date = get-date -uformat "%Y-%m-%d" | Out-String

 $file = $prefix + $date + ".*"

 $webclient = New-Object System.Net.WebClient 
 $webclient.UseDefaultCredentials = $true 

 Get-ChildItem -File -path $source -Filter $file

您目前拥有它的方式,PowerShell正在尝试将名为$file*的变量传递给Get-ChildItem