Я использую PowerShell script из этого ответа, чтобы сделать копию файла. Проблема возникает, когда я хочу включить несколько типов файлов, используя фильтр.
Get-ChildItem $originalPath -filter "*.htm"  | `
   foreach{ $targetFile = $htmPath + $_.FullName.SubString($originalPath.Length); ` 
 New-Item -ItemType File -Path $targetFile -Force;  `
 Copy-Item $_.FullName -destination $targetFile }
работает как сон. Однако проблема возникает, когда я хочу включить несколько типов файлов, используя фильтр.
Get-ChildItem $originalPath ` 
  -filter "*.gif","*.jpg","*.xls*","*.doc*","*.pdf*","*.wav*",".ppt*")  | `
   foreach{ $targetFile = $htmPath + $_.FullName.SubString($originalPath.Length); ` 
 New-Item -ItemType File -Path $targetFile -Force;  `
 Copy-Item $_.FullName -destination $targetFile }
Дает мне следующую ошибку:
Get-ChildItem : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'Filter'. Specified method is not supported.
At F:\data\foo\CGM.ps1:121 char:36
+ Get-ChildItem $originalPath -filter <<<<  "*.gif","*.jpg","*.xls*","*.doc*","*.pdf*","*.wav*",".ppt*" | `
    + CategoryInfo          : InvalidArgument: (:) [Get-ChildItem], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.GetChildItemCommand
У меня есть различные итерации круглых скобок, без круглых скобок, -filter, -include, определяющие включения как переменные (например, $fileFilter) и каждый раз получая указанную выше ошибку и всегда указывающую на все последующие -filter.
Интересным исключением является код -filter "*.gif,*.jpg,*.xls*,*.doc*,*.pdf*,*.wav*,*.ppt*". Ошибок нет, но я не получаю никаких результатов и ничего не возвращаюсь к консоли. Я подозреваю, что я непреднамеренно закодировал неявный and с этим утверждением?
Так что я делаю неправильно, и как я могу его исправить?