it-swarm.com.de

So entfernen Sie ein Verzeichnis mit Inhalt in PowerShell im Hintergrund

Ist es möglich, mithilfe von PowerShell ein Verzeichnis zu entfernen, das Dateien enthält, ohne dazu aufgefordert werden zu müssen?

182
hsz
Remove-Item -LiteralPath "foldertodelete" -Force -Recurse
281
Michael Price

Von PowerShell entfernen erzwinge Antwort : Help Remove-Item sagt:

Der Parameter Recurse in diesem Cmdlet funktioniert nicht ordnungsgemäß

Der Befehl zur Problemumgehung lautet

Get-ChildItem -Path $Destination -Recurse | Remove-Item -force -recurse

Und dann den Ordner selbst löschen

Remove-Item $Destination -Force 
52

Das hat für mich funktioniert:

Remove-Item $folderPath -Force  -Recurse -ErrorAction SilentlyContinue

Daher wird der Ordner mit allen darin enthaltenen Dateien entfernt und es wird kein Fehler ausgegeben, wenn der Ordnerpfad nicht vorhanden ist.

28
necrifede

Um Inhalte ohne Ordner zu löschen, können Sie Folgendes verwenden:

Remove-Item "foldertodelete\*" -Force -Recurse
9

rm -Force -Recurse -Confirm:$false $directory2Delete hat in der PowerShell ISE nicht funktioniert, es wurde jedoch die normale PowerShell-CLI verwendet.

Ich hoffe das hilft. Es hat mich bannanas gefahren.

4
Flightdeck73

Nachfolgend finden Sie eine kopierfähige Implementierung der Antwort von Michael Freidgeim

function Delete-FolderAndContents {
    # http://stackoverflow.com/a/9012108

    param(
        [Parameter(Mandatory=$true, Position=1)] [string] $folder_path
    )

    process {
        $child_items = ([array] (Get-ChildItem -Path $folder_path -Recurse -Force))
        if ($child_items) {
            $null = $child_items | Remove-Item -Force -Recurse
        }
        $null = Remove-Item $folder_path -Force
    }
}
2
user2426679

2018 Update

In der aktuellen Version von PowerShell (getestet mit Version 5.1 unter Windows 10 1809) kann die einfachere Unix-Syntax rm -R .\DirName verwendet werden, um das Verzeichnis .\DirName mit allen darin enthaltenen Unterverzeichnissen und Dateien unbemerkt zu löschen. Tatsächlich funktionieren viele gängige Unix-Befehle in PowerShell auf dieselbe Weise wie in einer Linux-Befehlszeile.

1
divenex

$LogPath = "E:\" # Your local of directories $Folders = Get-Childitem $LogPath -dir -r | Where-Object {$_.name -like "grav"} # Your keyword name directories

foreach ($Folder in $Folders) { $Item = $Folder.FullName Write-Output $Item Remove-Item $Item -Force -Recurse -ErrorAction SilentlyContinue }

0
Anderson Braz

Da sich mein Verzeichnis in C:\users befand, musste ich meine Powershell als Administrator ausführen.

del ./[your Folder name] -Force -Recurse

dieser Befehl hat bei mir funktioniert.

0
Omkar Agrawal

Wenn Sie Ihren Ordner als Objekt haben, nehmen wir an, Sie haben ihn mit dem folgenden Befehl im selben Skript erstellt:

$folder = New-Item -ItemType Directory -Force -Path "c:\tmp" -Name "myFolder"

Dann können Sie es einfach so im selben Skript entfernen

$folder.Delete($true)

$ true - Zustände für das rekursive Entfernen

0
$LogPath = "E:\" # Your local of directories
$Folders = Get-Childitem $LogPath -dir -r | Where-Object {$_.name -like "*temp*"}
foreach ($Folder in $Folders) 
{
    $Item =  $Folder.FullName
    Write-Output $Item
    Remove-Item $Item -Force -Recurse
}
0
Anderson Braz