Hallo Zusammen
Ich habe ein Script geschrieben.
Dieses Script geht in ein Verzeichnis rein, filtert die Ordner aus welche jünger als 30 Tage und nicht in einem CSV-File aufgelistet sind.
Nebenbei errechnet es noch die Grösse der ausgefilterten Ordner und beginnt mit dem löschen.
Am Schluss generiert es noch einen Bericht, welcher Informationen über die Ordner enthält.
Und da ist mein Problem es löscht entweder alle Ordner oder nur ein paar und vor ein paar Tagen hat das Script noch wunderbar funktioniert ohne das ich etwas geändert habe.
Hier ist noch das komplette Script:
[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") [void][reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null write-host "Einlesen der Ordner in Q:\Service_Desk..." $d = "N:\Test" $dirs = gci -Path $d | Where-Object -FilterScript {($_.LastWriteTime -lt (Get-Date).AddDays(-30))} | foreach-object -process { $_.FullName } $dirswhitelist = gci -Path $d | foreach-object -process { $_.FullName } $sizeFolderOld = (Get-ChildItem $d -recurse | Measure-Object -property length -sum) $sizeOld = "{0:N2}" -f ($sizeFolderOld.sum / 1MB) + " MB" $csv = import-csv N:\Service_Desk_Bereinigung\whitelist2.csv $deletedfolders = @() $errorfolders = @() $whitelistfolders = @() foreach($di in $dirs){ $whitelist = $false foreach($eintrag in $csv){ if ($eintrag.Ordnernamen -eq [System.IO.Path]::GetFileNameWithoutExtension($di) + [System.IO.Path]::GetExtension($di)){ $whitelist = $true } } if ($whitelist -ne $true ){ Try{ $deletedfolders += $di remove-item -recurse -force $di -ErrorAction Stop } Catch [System.Management.Automation.ItemNotFoundException] { $alreadydeletedfolders += $di } Catch { $errorfolders += $di } } else{ #Do Nothing } } foreach($diwhite in $dirswhitelist){ $whitelist = $false foreach($eintrag in $csv){ if ($eintrag.Ordnernamen -eq [System.IO.Path]::GetFileNameWithoutExtension($diwhite) + [System.IO.Path]::GetExtension($diwhite)){ $whitelist = $true } } if($whitelist -eq $true){ if ([System.IO.Path]::GetExtension($diwhite) -eq ""){ $whitelistfolders += $diwhite +"\" } else{ $whitelistfolders += $diwhite } } else{ #Do Nothing } } $sizeFolderNew = (Get-ChildItem $d -recurse | Measure-Object -property length -sum) $sizeNew = "{0:N2}" -f ($sizeFolderNew.sum / 1MB) + " MB" $date = "{0:dd.MM.yyyy_HH.mm.ss}" -f (Get-Date) $dateDays = "{0:dd.MM.yyyy}" -f (Get-Date) $dateHours = "{0:HH.mm.ss}" -f (Get-Date) $saveaspath = "O:\fd_ict\50_Service_betreiben\501_Operation_Management\5012_Service_Desk\Diverses\Q_ServiceDesk_Bereinigung\Journal\$date.pdf" $destiny = $saveaspath $saveaspath = [ref] $destiny $formatPDF = [ref] 17 $word=new-object -ComObject "Word.Application" $doc=$word.documents.Add("O:\fd_ict\50_Service_betreiben\501_Operation_Management\5012_Service_Desk\Diverses\Q_ServiceDesk_Bereinigung\Vorlage.dotx") $word.Visible=$false $selection=$word.Selection $selection.Font.size=21 $selection.Font.Bold=$True $selection.TypeText("Bericht der Bereinigung von Q:\Service_Desk") $selection.TypeParagraph() $selection.Font.size=10 $selection.Font.Bold=$False $selection.TypeText("Erstellt von Ramon Marti") $selection.TypeParagraph() $selection.TypeParagraph() $selection.Font.size=12 $stringUsername = $env:UserName $stringUsername.toUpper() $selection.TypeText("Der Batch wurde ausgeführt am $dateDays um $dateHours Uhr von $stringUsername .") $selection.TypeParagraph() $selection.TypeParagraph() $selection.TypeText("Grösse von Q:\Service_Desk vor der Bereinigung: ") $selection.TypeText($sizeOld) $selection.TypeParagraph() $selection.TypeText("Grösse von Q:\Service_Desk nach der Bereinigung: ") $selection.TypeText($sizeNew) $selection.TypeParagraph() $selection.TypeParagraph() $selection.Font.size=14 $selection.Font.Color="wdColorGreen" $selection.Font.Bold=$True $selection.TypeText("Gelöschte Ordner/Dateien:") $selection.TypeParagraph() $selection.TypeParagraph() $selection.Font.Bold=$False $selection.Font.size=8 $selection.Font.Color="wdColorAutomatic" foreach ($folder in $deletedfolders){ $selection.TypeText($folder) $selection.TypeParagraph() $selection.TypeParagraph() } $selection.Font.size=14 $selection.Font.Color="wdColorOrange" $selection.Font.Bold=$True $selection.TypeText("Diese Ordner/Dateien wurden nicht gelöscht, da sie sich in der Whitelist befinden:") $selection.TypeParagraph() $selection.TypeParagraph() $selection.Font.Bold=$False $selection.Font.size=8 $selection.Font.Color="wdColorAutomatic" foreach ($folder in $whitelistfolders){ $selection.TypeText($folder) $selection.TypeParagraph() $selection.TypeParagraph() } $selection.Font.size=14 $selection.Font.Color="wdColorRed" $selection.Font.Bold=$True $selection.TypeText("Diese Ordner/Dateien konnten aufgrund von fehlenden Berechtigungen nicht gelöscht werden:") $selection.TypeParagraph() $selection.TypeParagraph() $selection.Font.Bold=$False $selection.Font.size=8 $selection.Font.Color="wdColorAutomatic" foreach ($folder in $errorfolders){ $selection.TypeText($folder) $selection.TypeParagraph() $selection.TypeParagraph() } #Speichern des Journals# $doc.SaveAs($saveaspath, $formatPDF) $word.quit() ps winword | kill
Wäre froh wenn sich das jemand vielleicht mal anschauen könnte.
Vielen Dank schon mal im Voraus
Dominique Hofmann