Bestanden kopiëren of verplaatsen in PowerShell

15 mei 2021 1201 Keer bekeken

Vraagt ​​u zich af hoe u bestanden kunt kopiëren of verplaatsen met PowerShell?





Deze S Zone leert je hoe je PowerShell kunt gebruiken om een ​​bestand te kopiëren met Get-ChildItem en Artikel kopiëren cmdlets. De gids behandelt drie manieren om bestanden te kopiëren met PowerShell.



Ten slotte leer je ook hoe je bestanden verplaatst met PowerShell. In tegenstelling tot het kopiëren van een bestand, wordt het bestand van de bron verwijderd wanneer u een bestand verplaatst.

Blader door berichtonderwerpen



Een enkel bestand kopiëren met PowerShell

Een enkel bestand kopiëren met PowerShell

In deze eerste sectie leer ik je hoe je een enkel bestand kopieert met PowerShell. Of u nu een enkel bestand of alle bestanden in een map kopieert - de PowerShell-opdracht bestaat uit 2 delen.



In het eerste deel van het commando gebruik je de Get-ChildItem cmdlet naar lijst het bestand. Dan jij pijp de output van de Get-ChildItem commando aan de Artikel kopiëren cmdlet.

Een bestand weergeven met Get-ChildItem

Zoals ik al zei in de inleiding van deze sectie, moet je, voordat je een bestand kopieert met PowerShell, eerst lijst het met Get-ChildItem .



In dit voorbeeld wil ik het bestand met de naam Byte Count Tool kopiëren van de huidige map naar D:G-DriveWork ToolsProducts Portal 2.



Een enkel bestand kopiëren met PowerShell

Om het tekstbestand weer te geven, voer ik de onderstaande opdracht uit:

|__+_|

De snelste manier om de opdracht uit te voeren, is door een PowerShell-prompt naast de map met het bestand te plaatsen. Voer dan in Get-ChildItem in de PowerShell-prompt - druk op de spatiebalk om een ​​spatie toe te voegen.

Sleep vervolgens het bestand vanuit de map naar de PowerShell-prompt.

Ten slotte, om de bestandseigenschappen weer te geven, met de PowerShell-prompt geopend, drukt u op de enter-toets.

schakel Android uit met gesplitst scherm

Hoe de output van te pijpen? Get-ChildItem Naar Artikel kopiëren

Nadat u de eigenschappen van het bestand dat u wilt kopiëren hebt vermeld, pijpt u het naar de Artikel kopiëren . Dan, op de Artikel kopiëren onderdeel van de opdracht, geeft u de map op waarnaar u het bestand wilt kopiëren.

Hier is de PowerShell-opdracht om een ​​bestand te kopiëren:

|__+_| Ik heb aanhalingstekens toegevoegd rond het mappad omdat het spaties ertussen heeft.

Wanneer u op enter drukt, wordt de opdracht uitgevoerd - het bestand wordt gekopieerd naar de opgegeven bestemming

Alle bestandstypen in een map kopiëren met PowerShell

Alle bestandstypen in een map kopiëren met PowerShell

In het laatste deel van deze handleiding heb ik je laten zien hoe je een enkel bestand kopieert met PowerShell. Er kunnen zich echter situaties voordoen waarin u alle bestandstypen in een map moet kopiëren.

In dit gedeelte leert u hoe u alle bestanden met een specifieke bestandsextensie van een map naar een andere map kopieert. U wilt bijvoorbeeld alle bestanden met de bestandsextensie .log kopiëren van C:Windows naar een andere map.

Dit proces is vergelijkbaar met het kopiëren van een enkel bestand, maar er zijn extra stappen voor nodig. Om meer dan één bestand met PowerShell te kopiëren, moeten we met name een eenvoudig script maken.

Het eerste deel van het script omvat het gebruik van de Get-ChildItem cmdlet om de bestanden weer te geven die u wilt kopiëren. Dan, in het tweede deel van het script, gebruik je de Voor Elk loop om de lijst met bestanden te doorlopen.

Tot slot, binnen de Voor Elk lus, voeg je de Artikel kopiëren Cmdlet om elk van de bestanden naar de gewenste bestemming te kopiëren.

beste ip-scanner voor mac

Om het u gemakkelijk te maken het eenvoudige PowerShell-script dat we gaan maken te begrijpen, zal ik deze sectie in twee subsecties verdelen.

Hoe u alle bestandstypen kunt weergeven met Get-ChildItem

In dit voorbeeld wil ik alle bestanden met de bestandsextensie .log kopiëren van C:Windows naar de D:Log-bestanden. Zoals hierboven echter al werd aangegeven, is de eerste stap het gebruik van de Get-ChildItem Cmdlet om alle bestanden met de bestandsextensie .log weer te geven.

Nogmaals, om het u gemakkelijk te maken het laatste commando te begrijpen, laten we beginnen bij de basis. Laten we eerst een lijst maken van alle bestanden en mappen in de bronmap - met de onderstaande opdracht:

|__+_|

De laatste opdracht geeft zowel bestanden als mappen weer.

Alle bestandstypen in een map kopiëren met PowerShell

We willen PowerShell echter gebruiken om alleen bestanden met de bestandsextensie .log te kopiëren. We zullen dus nog een stukje commando toevoegen dat alleen deze bestanden zal weergeven.

Kijk nog eens naar de laatste screenshot. De laatste kolom heet Naam. Dit is de naam van het bestand of de map. We zullen deze informatie binnenkort gebruiken.

Om dit doel te bereiken, zullen we de uitvoer van Get-ChildItem C:Windows doorsluizen naar a Waar-Object opdracht. Hier is het commando dat die truc doet.

|__+_| Weet je nog dat ik je zei om kennis te nemen van de kolom Naam uit het resultaat van het Get-ChildItem C:Windows? In PowerShell gebruikt u de $_. automatische variabele om naar objecten te verwijzen. In de bovenstaande opdracht heb ik PowerShell verteld om alleen objecten weer te geven met een naam die '.log' bevat. Ten slotte heb ik het resultaat naar de Select-Object-cmdlet gepipetteerd en gezegd dat het de . moest weergeven Voor-en achternaam van het bestand. De Voor-en achternaam bevat het bestandspad.

Hier is het resultaat van het bovenstaande commando. We hebben alle andere informatie verwijderd - we hebben nu alleen de bestanden die we moeten kopiëren. We zijn echter nog niet klaar met dit deel - voordat je doorgaat met het laatste deel van het maken van het script, moeten we nog een bit toevoegen.

Dat bit is om het laatste commando aan een variabele toe te voegen - ik noem de variabele logboek bestanden . Hier is het commando dat dat werk doet.

|__+_|

Het enige verschil tussen deze opdracht en de laatste is de $logfiles = bit. Dit vertelt PowerShell om de uitvoer van op te slaan Get-ChildItem C:Windows | Where-Object { $_.Name -like '*.log' } | Selecteer-object volledige naam – in een variabele genaamd logboek bestanden .

In tegenstelling tot de laatste opdracht, als ik nu de meest recente opdracht uitvoer, wordt er geen resultaat weergegeven. De reden hiervoor is dat de uitvoer nu wordt opgeslagen in de variabele in plaats van deze op de console weer te geven.

Meerdere bestanden kopiëren met PowerShell voor elk lus

In dit laatste deel van het maken van ons script introduceren we de magische Voor elke lus . Als u meer wilt lezen over de ForEach-lus en de syntaxis, klikt u op ForEach-lus .

Over het algemeen ziet de syntaxis van een ForEach-lus er als volgt uit:

|__+_|

Dus als we dit toepassen op onze situatie - rekening houdend met het feit dat we alle bestanden met de .log-extensie met PowerShell willen kopiëren - ziet onze ForEach-opdracht er als volgt uit:

|__+_|

Laten we ten slotte dit laatste commando combineren met het Get-ChildItem uit de laatste sectie. Het uiteindelijke script ziet er als volgt uit:

|__+_| Merk op hoe ik . Voor-en achternaam in het $logfiles-gedeelte van de ForEach-lus. Dit komt omdat ik de Select-Object Cmdlet in het eerste deel van de opdracht heb gebruikt. Door dat bit toe te voegen, wordt de kolomnaam geëlimineerd. Anders zal de opdracht fouten retourneren.

Als u de bovenstaande opdrachten naar PowerShell ISE kopieert en opslaat, heeft u uw script! U kunt echter nog steeds de afzonderlijke opdrachten uitvoeren, zoals weergegeven in de onderstaande schermafbeelding.

De bovenstaande opdracht wordt uitgevoerd en PowerShell keert terug naar de prompt alsof er niets is gebeurd. Wanneer u echter de doelmap opent die u hebt opgegeven in het ForEach-lusbit van de opdracht, zou de PowerShell-opdracht de bestanden hebben gekopieerd - zie de onderstaande schermafbeelding ...

Hoe alle bestandstypen in een map en alle submappen te kopiëren

Hoe alle bestandstypen in een map en alle submappen te kopiëren

Tot dusverre heeft deze handleiding de stappen behandeld om een ​​enkel bestand met PowerShell te kopiëren. Verder heeft de gids ook stappen behandeld om meerdere bestanden uit een map te kopiëren.

We hebben enkele geweldige situaties met het kopiëren van PowerShell-bestanden besproken.

Er zijn echter situaties waarin u alle bestanden met een specifieke bestandsextensie moet kopiëren uit een map en al zijn submappen .

Als ik verder ga met mijn laatste voorbeeld, zeg dan dat ik alle bestanden met de bestandsextensie .log wil kopiëren van C:Windows map en al zijn submappen – ik zal gewoon de Get-ChildItem onderdeel van dit commando:

|__+_|

om de . te krijgen Get-ChildItem commando om alle bestanden weer te geven met de .log bestandsextensie in C:Windows en al zijn submappen - ik zal een . toevoegen Get-ChildItem opdrachtparameter genaamd recursief .

Met dit in gedachten ziet mijn nieuwe opdracht er nu als volgt uit:

|__+_|

Om mijn punt naar huis te brengen, zal ik de opdracht Get-ChildItem uitvoeren zonder de $ logfiles = bit. De opdracht retourneert fouten omdat ik toegang probeer te krijgen tot bestanden waartoe ik geen toegang heb.

Hoe alle bestandstypen in een map en alle submappen te kopiëren

Laat me proberen om PowerShell als beheerder te openen om deze fout op te lossen. Als ik nu dezelfde opdracht uitvoer, worden er enkele resultaten geretourneerd.

In tegenstelling tot de laatste opdracht die de . niet bevatte recursief parameter, retourneert deze opdracht veel meer bestanden. Dit komt omdat de opdracht alle bestanden in de map op het hoogste niveau heeft geretourneerd, evenals bestanden in alle submappen.

Hoe alle bestandstypen in een map en alle submappen te kopiëren

Ten slotte, om alle bestanden in een map en alle submappen met PowerShell te kopiëren, voert u een opdracht uit die vergelijkbaar is met de onderstaande opdracht.

Vergeet niet om uw mapdelen te wijzigen. Ik heb de paden van de bron- en doelmap vetgedrukt gemaakt, zodat u ze gemakkelijk kunt herkennen en wijzigen in de uwe. |__+_| Als u deze opdracht in PowerShell ISE wilt opslaan en als een script wilt uitvoeren, wilt u misschien de ErrorAction-variabele toevoegen aan de Get-ChildItem-opdracht. Met de ErrorAction-variabele ziet het uiteindelijke script er als volgt uit: |__+_|

Hoe bestanden in PowerShell te verplaatsen

Naast het kopiëren van bestanden, kan PowerShell ook: Beweging bestanden. Het verschil is dat wanneer u een bestand verplaatst, het uit de bronmap wordt verwijderd.

Dus als het kopiëren en verplaatsen van bestanden ongeveer hetzelfde is, betekent dit dat u dezelfde opdrachten kunt gebruiken die we in deze handleiding hebben gebruikt, met een kleine wijziging.

Om het u gemakkelijk te maken, heb ik tot nu toe alle opdrachten vermeld die in deze handleiding zijn behandeld. Vervolgens geef ik voor elk commando de bestand verplaatsen equivalent van de opdracht.

Voordat ik verder ga, is het belangrijk om te vermelden dat het enige verschil in de commando's het Copy-Item-bit is. In plaats van gebruiken Artikel kopiëren om een ​​bestand te kopiëren, om een ​​bestand te verplaatsen, gebruik je Item verplaatsen .

Een enkel bestand verplaatsen met PowerShell

De opdracht om een ​​enkel bestand in PowerShell te kopiëren is:

|__+_|

Gebruik in plaats daarvan deze opdracht om het bestand te verplaatsen:

|__+_|

Alle bestandstypen in een map verplaatsen met PowerShell

Zoals hierboven al besproken, zijn hier de opdrachten om alle bestandstypen in een map te kopiëren.

|__+_|

Gebruik daarentegen deze opdracht om de bestanden te verplaatsen.

NIET DOEN voer de onderstaande opdracht uit zonder de te wijzigen C:Windows een deel. Als u de opdracht uitvoert, kunnen belangrijke besturingssysteembestanden worden verplaatst en kan uw computer onstabiel worden. Deze commando's zijn alleen ter illustratie! |__+_|

Hoe alle bestandstypen in een map en alle submappen te verplaatsen

Ten slotte kopieert de onderstaande commando's alle bestanden in de bronmap en alle submappen.

tijdelijke windows 8 productsleutel
|__+_|

Gebruik in plaats daarvan deze opdracht om de bestanden te verplaatsen.

|__+_|

Ik hoop dat je de methoden voor het kopiëren en verplaatsen van bestanden met PowerShell die in deze handleiding worden besproken nuttig vond.

Als je het nuttig vond, stem dan vriendelijk Ja op de Was dit bericht Nuttige vraag hieronder.

Als echter geen van de methoden voor u werkte of als u iets anders nodig had dan de besproken methoden, klikt u op Nee op de Was dit bericht Nuttige vraag hieronder. Geef ons dan alstublieft aanvullende details. We beoordelen de feedback van onze lezers en werken onze handleidingen bij om voortdurend aan uw behoeften te voldoen.

U kunt ook een vraag stellen, een opmerking achterlaten of feedback geven met het formulier 'Een reactie achterlaten' aan het einde van deze pagina.

Bezoek ten slotte onze Windows PowerShell How-To-gidspagina voor meer PowerShell tech S-zones. Misschien vindt u onze pagina Werken vanaf de startpagina ook erg nuttig.