Bonjour,
Suite à de nombreuses recherches, je ne sais pas comment convertir ce script batch (script de nettoyage) en script powershell.
Merci d'avance pour l'aide que vous pourrez m'apporter.
@echo off
rem nettoyage rep users
PUSHD C:\Users\Public\Documents\
DEL /Q "*.*"
FOR /F "tokens=*" %%a in ('DIR /AD /B') do RD /S /Q "%%a"
PUSHD C:\Users\Public\Pictures\
DEL /Q "*.*"
FOR /F "tokens=*" %%a in ('DIR /AD /B') do RD /S /Q "%%a"
rem nettoyage temp
del /s /q %temp%\*.*
Salut,
Si tu souhaites supprimer l'intégralité du contenu d'un répertoire via powershell tu peux utiliser ça :
$path = "chemin de ton dossier"
Set-Location $path
Get-ChildItem *.* -Recurse | Remove-Item
Si tu veux exclure certains types de fichiers ou de dossier tu peux utiliser -Exclude "cequetuveux" sur ton get-childitem.
Je t'invite à consulter le technet de la cmdlet ici pour en savoir plus et affiner ta commande : https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-6
Je viens de te relire et de voir que tu incluais les fichiers cachés.
Du coup tu peux utiliser -force pour inclure l'intégralité des fichiers :
Get-ChildItem *.* -Recurse -Force | Remove-Item
Merci beaucoup ! Ce pendant je n'arrive pas à supprimer les dossier; comment dois-je faire ?
Utilise ça :
$path = "chemin de ton dossier"
Set-Location $path
Get-ChildItem * -Recurse -Force | Remove-Item -Recurse
Ma première commande n'incluait que le Items sous la forme *.* (donc les fichiers), la il va plus se poser de question et tout shooter.
Merci pour l'aide ! Je met à disposition mon script :
Set-Location "C:\Users\posteeleve\"
Get-ChildItem -Recurse -Force -Include "*.*" -Exclude "*.lnk" | Remove-Item
$Dossier = Get-ChildItem -Name -Exclude "*.*"
$i = 0
for ($i ; $i -lt $Dossier.count ; $i++){
$Emplacement = "C:\Users\posteeleve\" + $Dossier[$i]
Set-Location $Emplacement
Get-ChildItem -Recurse -Force -Exclude "*.lnk" | Remove-Item
}
Set-Location "C:\Users\Public\"
Get-ChildItem -Recurse -Force -Include "*.*" -Exclude "*.lnk" | Remove-Item
$Dossier = Get-ChildItem -Name -Exclude "*.*"
$i = 0
for ($i ; $i -lt $Dossier.count ; $i++){
$Emplacement = "C:\Users\Public\" + $Dossier[$i]
Set-Location $Emplacement
Get-ChildItem -Recurse -Force -Exclude "*.lnk" | Remove-Item
}
Joli petit script, compteurs, exclusion des .lnk, c'est propre !
Ravi d'avoir pu t'aider !
Si tu as envie d'aller plus loin (et être un gros flemmard comme moi) tu peux générer un envoi de mail avec le contenu de tes variables de sorties en utilisant :
Send-MailMessage -From 'Cequetuveux@tondomaine' -To 'tonadressemail', -Subject 'Ton objet de mail' -Body "Le corps de ton mail" -SmtpServer 'Ton Server SMTP'
Pour le corps de ton mail je t'invite à le travailler en amont dans une variable, sachant que tu peux inclure du html dans powershell.
Il ne te manquera plus qu'a créer un tâche planifiée sur ton poste/server/ordonnanceur avec ton script et c'est parti pour ne plus rien faire ;)
Amuse toi bien, n'oublie jamais que c'est comme ça que l'on progresse, reste curieux !