Outlook-Offlinedatendatei in allen Benutzerverzeichnissen löschen

Heute mussten in einer Virtual Desktop Infrastructure (VDI) einige virtuellen Maschienen aus der Datensicherung zurückzuspielen. Beim Starten von Outlook auf der jeweiligen VM erschien folgende Meldung: outlook2010-ost-datei

Nun kann man sicherlich händisch bei jeder Mitarbeiterin und Mitarbeiter beim Erscheinen der Meldung die Datei manuell löschen. Jedoch kann man davon aus gehen, dass morgens viele gleichzeitig anfangen und somit der Helpdesk gefordert ist. Daher habe ich ein kl. Powershell-Snippet geschrieben, dass die Arbeit erledigt.

connect-viserver vcenter.y.z.de

get-vm | where { $_.Name -like "abc*" -and $_.PowerState -eq "PoweredOn" } | ForEach-Object {

    write-host "$_"
    foreach ($users in Get-ChildItem "\\$($_.Name)\c$\users") {

       write-host "--$($users.BaseName)"
        if(Test-Path "\\$($_.Name)\c$\users\$($users.basename)\AppData\Local\Microsoft\Outlook\*.ost") {
            write-host "----Datei wird gelöscht..."
            Remove-Item "\\$($_.Name)\c$\users\$($users.basename)\AppData\Local\Microsoft\Outlook\*.ost" -Force
        }
    }
    write-host " "
}

Getestet habe ich das Skript unter Windows Server 2012R2 Standard, Powershell 4.0 und VMWare PowerCli 6.0. Das Snippet lässt sich selbstverständlich ausschmücken…

Zuerst wird eine Verbindung mit dem vCenter Server hergestellt. Danach werden alle virtuelle Maschinen ausgelesen, die mit „abc“ beginnen und eingeschalten sind. Nun wir pro VM alle Benutzerverzeichnisse in C:\Users in einer Schleife durchlaufen. Dort wird geprüft, ob im definierte Pfad eine Datei mit der Endung .ost existiert. Ist dies der Fall wird diese ohne Rückfrage gelöscht.