Windows 7 - Windows Update läuft ewig / WMI reparieren

Problem : Das Windows Update läuft ewig und findet keine neuen Updates, hier gibts mehrere Gründe dafür. Bei mir war es nur das WMI das defekt ist.

Lösung : Einmal WMI reparieren ;-)

net stop winmgmt
REN "%windir%\System32\Wbem\Repository" "%windir%\System32\Wbem\Repository_BACKUP"
net start winmgmt
winmgmt /salvagerepository
winmgmt /resetrepository

Exchange: Anzahl der gesendeten und empfangenen Mails eines Benutzers in einem bestimmten Zeitraum ermitteln

Problem:
Ich habe die Aufgabe bekommen, als unabhängige Instanz. zur ermitteln, wie viele Mails ein Benutzer in einem bestimmten Zeitraum empfängt bzw. versendet (z.B. um einen Arbeitsaufwand des Mailaufkommens zur ermitteln).

Lösung:
Ich habe hier ein sehr schönes Powershell-Skript auf MSExchange.org von Nuno Mota gefunden, das genau diese Information ausgibt. Vielen Dank hierfür!!

[Int] $intSent = $intRec = 0
Get-TransportServer | Get-MessageTrackingLog -ResultSize Unlimited -Start “10/01/2012” -End “11/01/2012” -Sender "user@domain.com" -EventID RECEIVE | ? {$_.Source -eq "STOREDRIVER"} | ForEach { $intSent++ }
Get-TransportServer | Get-MessageTrackingLog -ResultSize Unlimited -Start “10/01/2012” -End “11/01/2012” -Recipients "user@domain.com" -EventID DELIVER | ForEach { $intRec++ }
Write-Host "E-mails sent:    ", $intSent
Write-Host "E-mails received:", $intRec


Die Original-Quelle können Sie dem Link unten entnehmen. Ich möchte das Skript nur hier trotzdem veröffentlichen, falls der Link mal down geht. Getestet habe ich das Skript unter Exchange 2007 SP3.

Quelle:
MSExchange.org: Number of E-mails Sent and Received by one User by Nuno Mota

Exchange 2010 - Gelöschte Elemente bereinigen / Ordner Deletions bereinigen

Problem :

Wenn ein Benutzer eine E-Mail in Outlook löscht werden diese nicht sofort vom Server gelöscht sondern erst nach einiger Zeit ( Std. Konfiguration ist 30 Tage) , solange liegen die gelöschten Sachen noch im Ordner Deletions rum, als Administrator kann man allerdings dies über die Powershell sofort ausführen.

Lösung :

Der Benutzer der den Cleanup durchführen will muss alle Bedingungen erfüllen !

1.) Der Benutzer der den Befehl ausführt muss Mitglied in der Gruppe Discovery Management sein
2.) Das Benutzer muss Recht Mailbox Import Export besitzen da sonst der Parameter –DeleteContent nicht funktioniert.


Zu 1.) den Benutzer der Gruppe Discovery Management hinzufügen

Zu 2.)

Hier muss etwas Hand angelegt werden. Eine Gruppe erstellen z.B. mit dem Namen Exchange_Imp_Exp_Support, Gruppenbereich muss Universal sein, und diese dann mit der Exchange-Powershell dem Server hinzufügen.
New-ManagementRoleAssignment -Name "Import Export Support" -SecurityGroup Exchange_Imp_Exp_Support -Role "Mailbox Import Export"

Nachdem beides erledigt wurde stehen nun das Commandlet Search-Mailbox incl. dem Parameter -DeleteContent zur Verfügung.

Die Voraussetzungen sind nun erfüllt und das Postfach kann bereinigt werden. Mit dem Exchange-Powershell Befehl

DA MAN HIER SYSTEMNAH ARBEITET MUSS MAN WISSEN WAS MAN MACHT !

Search-Mailbox –identity "Benutzername" –SearchDumpsterOnly –DeleteContent


Quellen :
http://theucguy.net
http://social.technet.microsoft.com/Forums
http://technet.microsoft.com

Funktion um Logfile zu schreiben für die Powershell

Man möchte in der Powershell ein Logfile schreiben und dies immer mit Datum & Zeit versehen.

Hier meine Funktion dazu :


###################################
# Function to write Logfile
###################################
function write_log ($Inhalt)
{
$FileExists = Test-Path $LogFile
    $DateNow = Get-Date -Format "dd.MM.yyyy HH:mm" # Ermittelt das aktuelle Datum mit diesem Syntax 01.10.2013 10:00
    $FileInp = $DateNow + ' | ' + $Inhalt                          # Setzt die Zeile für unser Logfile zusammen
    If ($FileExists -eq $True){ # Wenn dir Datei existiert reinschreiben
        Add-Content $LogFile -value $FileInp  # Zeile hinten an die vorhanden Einträge anhängen
    } else {
       New-Item $Logfile -type file # Wenn dir Datei nicht existiert anlegen
       Add-Content $LogFile -value $FileInp # und reinschreiben
    }
}



Die Variable $Logfile muss natürlich definiert werden.

z.B. $Logfile = "C:\Skripte\logs\test.log"

Windows-Firewall: WMI für Firewall

Problem
Man möchte mittels WMI auf einen PC zugreifen wir jedoch von der Firewall blockiert.
Die Firewall-Konfiguration stellt den WMI-Dienst nicht zur Verfügung um diesen freizugeben.

Lösung
Die einfachste Möglichkeit die Freigabe zu aktivieren stellt der netsh-Befehl zur Verfügung.
Einfach in der Shell des Remote-Computers folgenden Befehl ausführen:

netsh firewall set service RemoteAdmin enable


Quelle: poweradmin.com: Enable WMI (Windows Management Instrumentation)
“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)