none
Cleanmanager Skript funktioniert nicht auf Server 2008 R2 RRS feed

  • Frage

  • Hallo zusammen,

    ich versuche ein Cleanmanager Skript für verschiedene Server-Versionen zu erstellen. Leider ist auf dem Server 2008 R2 ja noch die Powershell Version 1.0 installiert und ich vermute, dass er damit Probleme hat. Leider setzt das Skript bei dem Server 2008 R2 die Registry-Einträge nicht, sodass der Cleanmanager mit den vordefinierten Parametern läuft.

    Die "PathExist" Variable stellt nur fest, ob die .EXE und MUI in den Systemordnern enthalten sind.

    Hier ist der Code von den Registry-Einträgen:

    function doCleanup() { if ($global:PathExist = "true"){ Set-Location 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\' foreach ($item in $(Get-ChildItem).PSPath) { if (-not (Get-ItemProperty -Path $item -Name 'StateFlags0011' -ErrorAction SilentlyContinue)) { New-ItemProperty -Path $item -Name 'StateFlags0011' -PropertyType DWord -Value 2 -ErrorAction SilentlyContinue -Force if ($global:CleanupWithoutProtocols -eq 1) { if (($item -like "*Memory Dump Files") -or ($item -like "*Setup Log Files") -or ($item -like "*System error memory dump files") -or ($item -like "*System error minidump files") -or ($item -like "*Windows Error Reporting Archive Files") -or ($item -like "*Windows Error Reporting Queue Files") -or ($item -like "*Windows Error Reporting System Archive Files") -or ($item -like "*Windows Error Reporting System Queue Files") -or ($item -like "*Windows Upgrade Log Files") -or ($item -like "*Windows Error Reporting Temp Files")) { Remove-ItemProperty -Path $item -Name 'StateFlags0011' -ErrorAction SilentlyContinue -Force } } } else { if ($global:CleanupWithoutProtocols -eq 1) { if (($item -like "*Memory Dump Files") -or ($item -like "*Setup Log Files") -or ($item -like "*System error memory dump files") -or ($item -like "*System error minidump files") -or ($item -like "*Windows Error Reporting Archive Files") -or ($item -like "*Windows Error Reporting Queue Files") -or ($item -like "*Windows Error Reporting System Archive Files") -or ($item -like "*Windows Error Reporting System Queue Files") -or ($item -like "*Windows Upgrade Log Files") -or ($item -like "*Windows Error Reporting Temp Files")) { Remove-ItemProperty -Path $item -Name 'StateFlags0011' -ErrorAction SilentlyContinue -Force } } } } }

    Write-Host 'Starte CleanMgr.exe...'
    Start-Process -FilePath "cleanmgr" -ArgumentList '/sagerun:11', '/VERYLOWDISK' -Verb runAs -WindowStyle Hidden -Wait -ErrorAction SilentlyContinue

    Write-Host 'Warte auf beenden des Cleanmanager und DismHost Prozesses'
    Get-Process -Name cleanmgr,dismhost -ErrorAction SilentlyContinue | Wait-Process

    Write-Host "Vorgang abgeschlossen. Gerät gereinigt."

    }


    Er zeigt mir in der Konsole dann zwar an, dass er die Set-Location übernommen hat, allerdings setzt er die Einträge nicht und Cleanmanager läuft mit den Standardparametern.

    Hat jemand einen Tipp, wie man die Registry-Einträge zum laufen bekommt unter Version 1.0?

    Vielen Dank im Voraus.

    Mit freundlichen Grüßen

    Matthias Roth



    • Bearbeitet M. Roth Freitag, 15. Juni 2018 09:27
    Freitag, 15. Juni 2018 09:25

Antworten

  • Hallo Matthias,

    Leider ist auf dem Server 2008 R2 ja noch die Powershell Version 1.0 installiert ...

    Wenn ich mich nicht irre, kam mit dem Server 2008 R2 die Powershell Version 2.0. Vielleicht solltest Du das einfach mal prüfen. Die Powershell Version 1 ist meines Wissens obsolet und deprecated und sollte dringend aktualisiert werden.

    ... und ich vermute, dass er damit Probleme hat.

    Warum vermutest Du denn nur? Warum prüfst Du das nicht?

    Leider setzt das Skript bei dem Server 2008 R2 die Registry-Einträge nicht

    Normalerweise erhält man eine Fehlermeldung ... dann darf man aber natürlich nicht -ErrorAction SilentlyContinue benutzen.


    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Freitag, 15. Juni 2018 10:18