A másolás és mozgatás elég hasonló művelet, amit a Copy-Item és Move-Item cmdletekkel végezhetünk el. Kezdjük egyszerűbb példákkal! Másolni akarok egy fájl egy másik mappába:
PS C:\> Copy-Item 'C:\PSKönyv\Normál fájl.txt' -Destination C:\PSKönyv\Célmappa
Látható, hogy elég ilyenkor a célmappát meghatározni, a fájl ugyanazzal a névvel másolódik az új célkönyvtárba. Különösebb kimenete nincs ennek a parancsnak, ha minden sikeres volt. Ha valami nem sikerül, akkor természetesen hibajelzést kapunk.
Ha a másolás során más nevet akarunk adni a fájlnak, akkor a –Destination paraméterként a teljes nevet adjuk meg, illetve ha visszajelzést is akarunk kapni, akkor használhatjuk a –PassThru kapcsolót:
PS C:\> Copy-Item 'C:\PSKönyv\Normál fájl.txt' -Destination C:\PSKönyv\Célmappa
\újnévvel.txt -PassThru
Directory: C:\PSKönyv\Célmappa
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2014.06.30. 20:49 0 újnévvel.txt
Ha egy mappa tartalmát szeretnénk egy új mappába másolni, akkor a következő parancs nem lesz az igazi:
PS C:\> Copy-Item -Path C:\PowerShell\20150923 -Destination C:\PowerShell\másol
at
PS C:\> Get-ChildItem C:\PowerShell\másolat\
PS C:\>
Ugyan létrejött a „Másolat” mappa, de üres maradt. Ha használjuk a -recurse kapcsolót, akkor meg a célmappába az eredeti mappa teljes egészében átmásolódik, nem csak annak tartalma:
PS C:\> Copy-Item -Path C:\PowerShell\20150923 -Destination C:\PowerShell\másol
at -Recurse
PS C:\> Get-ChildItem C:\PowerShell\másolat\
Directory: C:\PowerShell\másolat
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2015.10.11. 18:00 20150923
Ha a -Path-nál *-ot használok, akkor sem lesz jó:
PS C:\> Copy-Item -Path C:\PowerShell\20150923\* -Destination C:\PowerShell\más
olat -Recurse
PS C:\> Get-ChildItem C:\PowerShell\másolat
Directory: C:\PowerShell
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2015.09.23. 17:24 1480 másolat
A „másolat” nem egy mappa lett, hanem az eredeti mappa utolsó fájljának átnevezett példánya, azaz itt sem jártunk sikerrel.
A megoldás ilyen esetben, hogy létre kell hoznunk a célmappát első lépésben, majd már használhatjuk a *-os Copy-Item cmdletet:
PS C:\> New-Item -Path C:\PowerShell\másolat -ItemType directory
Directory: C:\PowerShell
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2015.10.11. 18:20 másolat
PS C:\> Copy-Item C:\PowerShell\20150923\* -Destination C:\PowerShell\másolat\