Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

Fehler im Script für mich nicht auffindbar

$
0
0

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


Viewing all articles
Browse latest Browse all 2314