À l'aide de PowerShell, est-il possible de supprimer un répertoire contenant des fichiers sans demander confirmation de l'action?
Remove-Item -LiteralPath "foldertodelete" -Force -Recurse
From PowerShell remove force réponse : Help Remove-Item dit:
Le paramètre Recurse dans cette cmdlet ne fonctionne pas correctement
La solution de contournement est
Get-ChildItem -Path $Destination -Recurse | Remove-Item -force -recurse
Et puis supprimez le dossier lui-même
Remove-Item $Destination -Force
Cela a fonctionné pour moi:
Remove-Item $folderPath -Force -Recurse -ErrorAction SilentlyContinue
Ainsi, le dossier est supprimé avec tous les fichiers qu'il contient et il ne génère pas d'erreur si le chemin du dossier n'existe pas.
Pour supprimer du contenu sans dossier, vous pouvez utiliser les éléments suivants:
Remove-Item "foldertodelete\*" -Force -Recurse
rm -Force -Recurse -Confirm:$false $directory2Delete
ne fonctionnait pas dans PowerShell ISE , mais fonctionnait via l'interface de ligne de commande PowerShell standard.
J'espère que ça aide. Cela me conduisait des bannanas.
Vous trouverez ci-dessous une implémentation copiable de la réponse de 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
}
}
Mise à jour 2018
Dans la version actuelle de PowerShell (testée avec la version 5.1 sur Windows 10 1809), vous pouvez utiliser la syntaxe Unix plus simple rm -R .\DirName
pour supprimer de manière silencieuse le répertoire .\DirName
avec tous les sous-répertoires et fichiers qu'il contient. En fait, de nombreuses commandes Unix courantes fonctionnent de la même manière dans PowerShell que dans une ligne de commande Linux.
$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 }
Comme mon répertoire était en C:\utilisateurs, je devais exécuter mon PowerShell en tant qu’administrateur,
del ./[your Folder name] -Force -Recurse
cette commande a fonctionné pour moi.
Si vous avez votre dossier comme objet, supposons que vous l'avez créé dans le même script en utilisant la commande suivante:
$folder = New-Item -ItemType Directory -Force -Path "c:\tmp" -Name "myFolder"
Ensuite, vous pouvez simplement l'enlever comme ceci dans le même script
$folder.Delete($true)
$ true - indique un retrait récursif
$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
}