2016-07-05 25 views
1

Ich habe einen Stammordner (ein zugeordnetes Netzlaufwerk) zu Z, in diesem Ordner habe ich einen Ordner namens Archiv und ich möchte einige Ordner in Z verschieben Archiv archivieren.Verschieben Sie die Anzahl der Ordner rekursiv in einen anderen Ordner im selben Ordner mit PowerShell

Die Titel der zu verschiebenden Ordner habe ich in einer CSV-Datei.

Ich habe ein PowerShell-Skript erstellt, aber irgendwie funktioniert es nicht wirklich, es verschiebt einen Ordner, aber dann passiert nichts, auch nicht im PowerShell-Befehl, einfach leer und nach einer Weile passiert nichts und ich muss den schließen PowerShell-Fenster.

Also wenn ich zehn Ordner zu kopieren habe, wird nur der erste bewegt und das ist es. Hier

ist der Code:

$currentPath = Split-Path -Parent $PSCommandPath; 
$areaCsvPath = $currentPath + "\CSVFile.csv"; 
write-host $areaCsvPath; 

$csv = Import-Csv $areaCsvPath; 
$count =0; 

$Creds = Get-Credential 

foreach ($row in $csv) 
{ 
    Get-ChildItem -Path "Z:\" -Recurse | 
     Where-Object {$_.name -eq $row.Title} | 
     Move-Item -destination "Z:\_Archive" -Credential $Creds 

    $count++; 
    write-host $count; 

} 

CSV ist wie folgt

Title 
12345 
22223 
75687 
... 
+0

können Sie die 'CSVFile.csv' bereitstellen –

+0

Zum Beitrag hinzugefügt, aber nichts besonderes ... – Alnedru

Antwort

1

Ich sehe nicht, warum nur ein Ordner verschoben wird, aber man könnte das folgende Skript versuchen, die viel schneller sein sollte weil das Get-ChildItem Cmdlets nur einmal genannt:

$currentPath = Split-Path -Parent $PSCommandPath; 
$areaCsvPath = $currentPath + "\CSVFile.csv"; 
write-host $areaCsvPath; 

$csv = Import-Csv $areaCsvPath; 
$Creds = Get-Credential 

Get-ChildItem -Path "Z:\" -Recurse | 
     Where-Object Name -in ($csv | select -expand Title) | 
     Move-Item -destination "Z:\_Archive" -Credential $Creds 

Wenn die Ordner ein In der obersten Ebene auf Z: sollten Sie den -Recurse Parameter weglassen. Wenn Sie nur Ordner verschieben möchten, können Sie auch den Schalter -Directory zum Aufruf Get-ChildItem hinzufügen, um die Leistung weiter zu verbessern.

+0

Ja, ich muss nur Ordner verschieben, aber die Ordner haben Inhalt, andere Unterordner und Elemente. Soll ich -recurse entfernen und -verzeichnis hinzufügen? – Alnedru

+0

Ja, versuchen Sie es. –

+0

Btw seltsam bekomme ich einen Fehler: Move-Item: Der Dateiname, Verzeichnisname oder Volume-Label-Syntax ist falsch. Move-Item -Ziel "Z: \ _ Archiv"; – Alnedru

Verwandte Themen