Copy-Item

Kopiuje plik lub katalog do innej lokalizacji.

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] [-Destination] [-Recurse]

  • -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 -Path zawiera wildcard.
  • -PassThru — zwraca obiekty skopiowanych elementów (domyślnie Copy-Item nic 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.