Как получить конкретные файлы с помощью 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
,