Ich verwende das PowerShell-Skript aus dieser Antwort , um eine Dateikopie zu erstellen. Das Problem tritt auf, wenn ich mithilfe des Filters mehrere Dateitypen einschließen möchte.
Get-ChildItem $originalPath -filter "*.htm" | `
foreach{ $targetFile = $htmPath + $_.FullName.SubString($originalPath.Length); `
New-Item -ItemType File -Path $targetFile -Force; `
Copy-Item $_.FullName -destination $targetFile }
funktioniert wie ein Traum. Das Problem tritt jedoch auf, wenn ich mithilfe des Filters mehrere Dateitypen einschließen möchte.
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 }
Gibt mir folgenden Fehler:
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
Ich habe verschiedene Iterationen von Klammern, keine Klammern -filter
, -include
und definiert die Einschlüsse als Variable (zB $fileFilter
) und jedes Mal den obigen Fehler erhalten, und immer zeigt auf was auch immer folgt -filter
.
Die interessante Ausnahme ist, wenn ich codiere -filter "*.gif,*.jpg,*.xls*,*.doc*,*.pdf*,*.wav*,*.ppt*"
. Es gibt keine Fehler, aber ich bekomme keine Ergebnisse und nichts zurück zur Konsole. Ich vermute, ich habe versehentlich einen Impicit and
mit dieser Aussage codiert ?
Was mache ich also falsch und wie kann ich das korrigieren?
\*
Trick hat gerade sechs Probleme gelöst. Super & Danke!