Как получить конкретные файлы с помощью 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 символа:1 + Get-ChildItem -File -path $source -Filter $file*

Любая помощь будет оценена. я использую $file* в фильтре, потому что расширение файла может быть другим.

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

Попробуй это:

#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,

Другие вопросы по тегам