Copy-Item to polecenie PowerShell kopiujące pliki i foldery, z parametrem -Recurse obsługujące też kopiowanie całych drzew katalogów.
Czym jest Copy-Item i do czego służy
Copy-Item to polecenie PowerShell przeznaczone do tworzenia kopii plików, katalogów oraz innych elementów dostępnych w systemie plików. Pozwala wskazać źródło danych i miejsce docelowe, a następnie wykonać kopiowanie bez otwierania Eksploratora plików. Dzięki temu można automatyzować powtarzalne zadania, przygotowywać kopie dokumentów, przenosić dane między folderami oraz budować skrypty używane podczas administracji systemem Windows.
Najprostsza postać polecenia wygląda następująco:
Copy-Item -Path "C:\Dane\raport.txt" -Destination "C:\Kopia\raport.txt"
Parametr -Path określa element źródłowy, natomiast -Destination wskazuje lokalizację kopii. Jeżeli w miejscu docelowym nie zostanie podana nowa nazwa pliku, zwykle zachowywana jest nazwa elementu źródłowego. Do kopiowania całej zawartości folderu wraz z podkatalogami stosuje się przełącznik -Recurse:
Copy-Item -Path "C:\Projekty" -Destination "D:\Archiwum\Projekty" -Recurse
W praktyce warto pamiętać, że kopiowanie nie jest tym samym co przenoszenie. Copy-Item pozostawia oryginalne dane w dotychczasowym miejscu, a utworzony element stanowi ich dodatkową kopię.
Kontekst techniczny i porównanie z innymi poleceniami - Copy-Item – kopiowanie plików
PowerShell traktuje ścieżki i pliki jako obiekty, dlatego Copy-Item można łączyć z filtrami, potokiem oraz innymi poleceniami. Ułatwia to wybieranie konkretnych typów plików, kopiowanie tylko elementów spełniających określone warunki albo tworzenie procedur wykonywanych cyklicznie. Przykładowo, kopiowanie plików tekstowych z jednego folderu może zostać ograniczone za pomocą symbolu wieloznacznego:
Copy-Item -Path "C:\Raporty\*.txt" -Destination "D:\KopiaRaportow"
W porównaniu z graficznym kopiowaniem metodą „przeciągnij i upuść” polecenie daje większą powtarzalność i możliwość zapisania całej operacji w skrypcie. Z kolei Move-Item służy do przenoszenia elementów, a więc po wykonaniu operacji plik lub folder powinien zniknąć z lokalizacji źródłowej. Remove-Item usuwa wskazane elementy, dlatego przed jego użyciem należy zachować szczególną ostrożność.
Na zachowanie Copy-Item wpływają między innymi parametry -Filter, -Include, -Exclude, -Force, -WhatIf i -Confirm. -Force może pozwolić na operowanie na elementach ukrytych lub nadpisanie niektórych ograniczeń, natomiast -WhatIf pokazuje przewidywany skutek bez wykonywania kopiowania. Przed uruchomieniem skryptu modyfikującego większą liczbę danych przydatne jest sprawdzenie go właśnie w trybie symulacji.
Przy pracy z dużymi zbiorami danych albo kopiowaniem wymagającym weryfikacji integralności można rozważyć narzędzia wyspecjalizowane w synchronizacji. Copy-Item sprawdza się przede wszystkim jako uniwersalne polecenie do kopiowania w ramach PowerShell, lecz samo wykonanie polecenia nie powinno być automatycznie utożsamiane z pełnym systemem kopii zapasowych.
Typowe problemy i błędy przy kopiowaniu
Jedną z najczęstszych przyczyn niepowodzenia jest błędnie zapisana ścieżka. Spacje, nawiasy i inne znaki specjalne mogą wymagać ujęcia ścieżki w cudzysłowy. Problem pojawia się również wtedy, gdy katalog docelowy nie istnieje albo gdy podana lokalizacja wskazuje plik, mimo że polecenie ma skopiować folder. Warto sprawdzić każdą ścieżkę poleceniem Test-Path:
Test-Path "C:\Dane\raport.txt"
Jeśli zwrócona zostanie wartość False, wskazany element nie został odnaleziony pod podaną ścieżką. Przy kopiowaniu folderów bez parametru -Recurse może zostać skopiowany sam katalog albo operacja zakończy się komunikatem informującym o pominięciu zawartości. Należy też uważać na strukturę miejsca docelowego, ponieważ dodanie lub pominięcie nazwy folderu może dać inny rezultat niż oczekiwany.
Odmowa dostępu zwykle wynika z uprawnień konta, blokady pliku przez działającą aplikację, ochrony systemowego katalogu albo ograniczeń narzuconych przez udział sieciowy. Uruchomienie PowerShell z podwyższonymi uprawnieniami nie zawsze rozwiązuje problem i powinno być stosowane tylko wtedy, gdy jest uzasadnione. Najpierw należy ustalić, który element jest chroniony i czy używane konto ma prawo do odczytu źródła oraz zapisu w lokalizacji docelowej.
Niebezpieczne może być bezrefleksyjne użycie -Force, szczególnie w skryptach wykonywanych na wielu folderach. Przed nadpisywaniem danych warto zastosować -WhatIf, wykonać próbę na kopii testowej i sprawdzić wolne miejsce. Gdy występują problemy z polskimi znakami, długimi ścieżkami, synchronizacją lub częściowo skopiowanymi plikami, przyczyną może być także sposób obsługi systemu plików, a nie sama składnia polecenia.
Kiedy warto poprosić o ocenę stanu sprzętu - Copy-Item – kopiowanie plików
Pomoc serwisowa może być przydatna, gdy kopiowanie kończy się błędami mimo poprawnych ścieżek, pliki znikają po operacji, foldery otwierają się z opóźnieniem albo dane są dostępne tylko częściowo. Zgłoszenie warto rozważyć również wtedy, gdy problem dotyczy wielu lokalizacji, nośnik jest wykrywany niestabilnie, system zgłasza uszkodzenie struktury plików lub nie można ustalić, czy kopia rzeczywiście zawiera kompletną zawartość.
W serwisie laptopów i komputerów PC w Warszawie można zlecić sprawdzenie nośnika, uprawnień, kondycji systemu plików oraz poprawności wykonywania skryptów PowerShell. Naprawy trwają z reguły do 3 dni roboczych, zależnie od zakresu diagnostyki i stanu urządzenia.
Przed przekazaniem sprzętu dobrze jest przygotować opis objawów, przykładową ścieżkę źródłową i docelową oraz informację, czy problem występuje przy pojedynczym pliku, całym folderze czy tylko przy konkretnym dysku. Nie należy udostępniać haseł ani poufnych dokumentów, jeśli nie jest to konieczne do odtworzenia usterki. W przypadku danych o szczególnym znaczeniu zalecane jest wcześniejsze ustalenie, czy możliwe będzie wykonanie kopii roboczej bez ingerowania w oryginalny nośnik.