Get-ChildItemErmöglicht das Auflisten von Dateien und Verzeichnissen, auch rekursiv mit Dateinamenfiltern. Copy-Itemermöglicht es Ihnen, eine Datei zu kopieren.
Es gibt viele Überschneidungen bei der Auswahl der Dateien, oft reicht dies Copy-Itemallein aus, abhängig von den Details dessen, was Sie benötigen (z. B. möchten Sie die Ordnerstruktur beibehalten?).
So kopieren Sie alle *.foound *.barvon StartFolder nach DestFolder:
Copy-Item -path "StartFolder" -include "*.foo","*.bar" -Destination "DestFolder"
Wenn Sie die Ordnerstruktur beibehalten müssen, wird es schwieriger, weil Sie den Namen des Zielordners erstellen müssen.
$sourcePath = 'C:\StartFolder'
$destPath = 'C:\DestFolder'
Get-ChildItem $sourcePath -Recurse -Include '*.foo', '*.bar' | Foreach-Object `
{
$destDir = Split-Path ($_.FullName -Replace [regex]::Escape($sourcePath), $destPath)
if (!(Test-Path $destDir))
{
New-Item -ItemType directory $destDir | Out-Null
}
Copy-Item $_ -Destination $destDir
}
Ist robocopyaber wahrscheinlich einfacher:
robocopy StartFolder DestFolder *.foo *.bar /s
Am Ende hängt die Art der Auswahl von den Details ab, die benötigt werden.
(Oben habe ich Aliase vermieden (z. B. Copy-Itemanstatt copy) und explizit Parameternamen verwendet, auch wenn sie positionell sind.)