Copy-Item to powershellowe polecenie do kopiowania plików i katalogów (a także innych elementów, np. kluczy rejestru) z jednej lokalizacji do drugiej. Robi to samo co copy w cmd, tylko z całą mocą PowerShella: obsługuje wildcardy, filtry, kopiowanie rekursywne całych drzew katalogów, a nawet przerzucanie plików przez zdalne sesje PSSession. Oryginał zostaje na miejscu, w docelowej lokalizacji powstaje kopia.
Składnia i najważniejsze opcje
Podstawowa forma: Copy-Item [-Path]
-Path— źródło: plik, katalog lub wzorzec (np.*.txt). Pozycyjny, więc nazwę zwykle wpisujesz bez-Path.-Destination— miejsce docelowe. Jeśli wskażesz istniejący katalog, plik wpada do środka; jeśli nazwę pliku — taka będzie nazwa kopii.-Recurse— kopiuje katalog razem z całą zawartością i podkatalogami. Bez tego folder z plikami nie pojedzie w całości.-Force— nadpisuje pliki tylko-do-odczytu i tworzy brakujące katalogi po drodze. Nie zmienia uprawnień NTFS.-Filter— szybki filtr po nazwie (np.*.log), stosowany przez dostawcę FileSystem, wydajniejszy niż Include/Exclude.-Include/-Exclude— dopuszcza lub pomija wzorce; działają sensownie tylko gdy-Pathzawiera wildcard.-PassThru— zwraca obiekty skopiowanych elementów (domyślnieCopy-Itemnic nie wypisuje).-WhatIf— pokazuje, co by się skopiowało, niczego nie ruszając. Twój pas bezpieczeństwa.
Przykłady użycia
Copy-Item raport.txt C:\Backup\— kopiuje pojedynczy plik do katalogu kopii zapasowych.Copy-Item C:\Projekt -Destination D:\Kopia -Recurse— kopiuje cały folder projektu z podkatalogami.Copy-Item C:\Logi\*.log -Destination C:\Archiwum -Force— przerzuca wszystkie pliki.log, nadpisując istniejące.Copy-Item C:\Dane -Destination C:\Backup -Recurse -Filter *.csv— bierze z drzewa tylko pliki CSV.Copy-Item app.zip -Destination C:\app.zip -ToSession $sesja— wysyła plik na zdalny komputer przez otwartą sesję PSSession.
Częste błędy i pułapki
Najczęstszy zgrzyt: kopiujesz katalog bez -Recurse i dostajesz tylko pusty folder docelowy albo komunikat o pominięciu zawartości. Druga pułapka — -Include i -Exclude milcząco nie działają, jeśli w -Path nie ma wildcardu; w tym scenariuszu sięgnij po -Filter albo dorzuć \* do ścieżki. Pamiętaj też, że -Force nadpisuje pliki tylko-do-odczytu bez pytania, więc łatwo zamazać coś cennego — przed groźną operacją odpal najpierw -WhatIf. Gdy w ścieżce masz nawiasy kwadratowe albo inne znaki specjalne, użyj -LiteralPath zamiast -Path, bo inaczej PowerShell potraktuje je jako wzorzec.
Powiązane komendy: Move-Item, Remove-Item, Get-ChildItem, New-Item, Rename-Item, a po stronie cmd: copy, xcopy, robocopy.