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

Icons in Systray (Windows 7) verschwunden

Problem : Die Icons in der Systray des Windows 7 Systems machen was sie möchten. Beim darüber fahren mit der Maus verschwinden Sie oder es ist ein großer leerer Platz zwischen den Icons. Dies liegt meistens an einem fehlerhaft Iconcache. Also reparieren wir den doch einfach mal

Lösung : Wie ich in einem älteren Artikel schon geschrieben hatte "Windows-7-Update-wird-nicht-installiert-Fehler-80243004" kann man den Iconcache manuell leeren. Nun ist das hier öfter der Fall und wenn man etwas öfter als 2 mal machen muss wird ein Skript geschrieben.

Hier der Sourcecode :
Dim ObjWsh 			:	Set ObjWsh = CreateObject("WScript.Shell")
Dim RegPath 		:	RegPath = "HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify\"
Dim RegKey(1)
	RegKey(0) = "IconStreams"
	RegKey(1) = "PastIconsStream"
If MsgBox("Sollen die SysTray Icons gefixt werden ?",vbYesNo + vbQuestion,"Ausführen ?") = vbYes then
	For X = 0 To UBound(RegKey)
		ObjWsh.RegDelete RegPath & RegKey(X)
	Next
	MsgBox "Icons wurden gefixt bitte melden sie sich ab/an um die Änderungen zu sehen",vbOKOnly + vbInformation,"Icon Fehler behoben"
Else
	MsgBox "Skript wurde abgebrochen",vbOKOnly + vbExclamation,"Abbruch"
End If
WScript.Quit(0)


Für die etwas fauleren unter euch hier der Download Fix_Icons.txt Nach dem Download txt in vbs umbenennen und alles ist erledigt.

NICHT VERGESSEN NACH DEM AUSFÜHREN EINMAL AB UND ANMELDEN ODER DIE EXPLORER.EXE BEENDEN UND NEU STARTEN


PDFtk - PDF Formulare automatisch befüllen

Wenn man automatisiert PDF Formulare ausfüllen möchte bietet sich das PDF-Toolkit von Sid Steward an. Es ermöglicht PDF Formulare über fdf Dateien zu befüllen. PDFtk ist erhältlich für Linux und Windows und funktioniert bei beiden Systemen gleich. Zumindest hab ich noch keine Unterschiede festgestellt ;-)

Wie geht man nun vor um pdftk in einem automatischen Prozess zu integrieren ?

1.) Download von PDFTk hier https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ , bei Linux ist PDFTk meist über Repository verfügbar.

Debian
apt-get install pdftk
OpenSuse
zypper install pdftk


Man kann sich natürlich auch das aktuelle PDFTk downloaden und über die Packetverwaltung installieren.

Debian
dpkg -i /download/pdftk-XXXXX.deb
OpenSuse
rpm -i /download/pdftk-XXXXX.rpm

Windows >> PDFTK für Windows Download & Installation


2.) um nun alle Felder zu erhalten die ausgefüllt werden können ruft man PDFtk auf mit diesem Kommando auf :
pdftk FORMULAR.pdf generate_fdf output FORMULAR.fdf

man erhält nun eine Datei mit den Formular Feldern und dem Header & Footer der Datei. Das sieht dann so in der Art aus
%FDF-1.2
%âãÏÓ
1 0 obj 
<<
/FDF 
<<
/Fields [
<<
/V ()
/T (TEST_NAME)
>> 
<<
/V ()
/T (TEST_ADRESSE)
>> 
]
>>
>>
endobj 
trailer
<<
/Root 1 0 R
>>
%%EOF


3.) Die Werte kann man nun abändern und wieder mit der PDF Datei vereinen. Um das scripting zu vereinfachen habe ich hier die Werte gedreht. /T ist der Feldname /V der Inhalt (Value ?)
In meinem Fall werden die Daten aus einer Oracle Datenbank an ein vbs Skript geschickt was mir die FDF Dateien erzeugt und dann mit der PDF Datei vereint.

%FDF-1.2
%âãÏÓ
1 0 obj 
<<
/FDF 
<<
/Fields [
<< /T (TEST_NAME) /V (Ich bin ein Name im Formular)>>
<< /T (TEST_ADRESSE) /V (Muuuusterway 12,0012412 Irgendwo)>>
]
>>
>>
endobj 
trailer
<<
/Root 1 0 R
>>
%%EOF


Mit diesem Befehl kann man nun die fdf und das PDF Formular zusammenführen und unter neuen Namen abspeichern :
pdftk FORMULAR.pdf fill_form FORMULAR.fdf output FORMULAR_FERTIG.pdf


Bekanntes Problem :

Sollte ein Formular eine gewisse Intelligenz aufweisen , z.B. freischalten von Felder nach anklicken , werden diese Werte nicht sichtbar. Das Feld muss erst manuell angeklickt werden um den Eintrag sichbar zu machen.
Leider blockiert dieser Fehler ca. 10% meiner Formulare aber 90% konnte ich damit automatisch aus der Datenbank befüllen, und die Schreibfehler sind auf null gesunken ;-)

Quelle :

PDFTk download

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

Exchange 2010 wichtige Powershell Befehle

Für mich und vielleicht für andere hier ein paar wichtige Powershell Befehle die mir das administrieren des Exchange 2010 Servers erleichtern

Großgeschriebene Sachen müssen angepasst werden

Mailbox anzeigen und nach Größe sortieren , für den Server SERVERNAME
Get-MailBoxStatistics -server SERVERNAME | sort TotalItemSize -desc | FT DisplayName,TotalItemSize


Mailbox anzeigen und nach Größe sortieren mit Datenbank, für den Server SERVERNAME
Get-MailBoxStatistics -server SERVERNAME | sort TotalItemSize -desc | FT DisplayName,TotalItemSize,Database


Mailbox anzeigen und nach Größe sortieren mit Datenbank, für den Server SERVERNAME mit aktuellem Datum
Get-MailBoxStatistics -server SERVERNAME | sort TotalItemSize -desc | FT {Get-Date -Format yyyy.MM.dd},DisplayName,TotalItemSize,Database


Mailbox anzeigen und nach Größe sortieren , für den Server SERVERNAME mit aktuellem Datum und TotalItemSize immer in KB :
Get-MailBoxStatistics -server SERVERNAME | sort TotalItemSize -desc | FT {Get-Date -Format yyyy.MM.dd},DisplayName,@{expression={$_.TotalItemSize.Value.ToKB()}}


Alle Mailboxen mit aktiviertem Outlook Web Access anzeigen :
Get-CASMailbox | where { $_.OWAEnabled } | ft DisplayName, OWAEnabled


Alle Mailboxen mit deaktiviertem Outlook Web Access anzeigen :
Get-CASMailbox | where { $_.OWAEnabled -eq 0 } | ft DisplayName, OWAEnabled


Alle Mailboxen mit aktiviertem ActiveSync anzeigen :
Get-CASMailbox | where { $_.ActiveSyncEnabled } ft DisplayName, ActiveSyncEnabled


Alle Mailboxen mit deaktiviertem ActiveSync anzeigen :
Get-CASMailbox | where { $_.ActiveSyncEnabled -eq 0} ft DisplayName, ActiveSyncEnabled


Statistiken für ein bestimmts Postfach :
Get-MailboxStatistics BENUTZERNAME | fl


Statistiken für ein bestimmts Postfach mit Speicherlimit :
Get-MailboxStatistics BENUTZERNAME | ft displayname,*ItemCount,total*


Postfachgröße :
Get-MailboxStatistics | ft DisplayName,ItemCount,TotalItemSize -AutoSize


Status des Postfachverschiebens ermitteln :
Get-MoveRequest –MoveStatus InProgress | Get-MoveRequestStatistics | Select DisplayName,PercentComplete,TotalMailboxSize,SourceDatabase,TargetDatabase


Übersicht der Postfächer einer Datenbank – Sortiert nach letztem Login mit den Feldern: Benutzername, Größe, Datum der letzten Anmeldung, Letzte Anmeldung :
Get-Mailbox -Database "DATENBANKNAME" | Get-MailboxStatistics | Sort LastLogonTime | ft DisplayName, TotalItemSize, LastLogonTime, LastLoggedOnUserAccount


Übersicht der Postfächer einer Datenbank – Sortiert nach der Größe mit den Feldern: Benutzername, Größe, Datum der letzten Anmeldung :
Get-Mailbox -Database "DATENBANKNAME" | Get-MailboxStatistics | Sort LastLogonTime | ft DisplayName, @{expression={$_.TotalItemSize.Value.ToKB()}}, LastLogonTime


Detailiert Übersicht eines Postfaches mit Unterordnern und dessen Größe :
Get-MailboxFolderStatistics -identity BENUTZERNAME | ft FolderPath, FolderSize, ItemsInFolder, FolderAndSubfolderSize


Postfächer auf die der Benutzer “USERNAME” volle Berechtigungen hat :
Get-Mailbox | Get-MailboxPermission | Where-Object { ($_.AccessRights -eq "*fullaccess*") -and ($_.User -like "*USERNAME*") }


Alle Postfächer mit “Sende als” und “volle Postfachberechtigung” :
Get-Mailbox | Get-ADPermission | Where-Object { ($_.ExtendedRights -like "*send-as*") -and -not ($_.User -like "nt authority\self") }


Liste aller ActiveSync Geräte auf dem Server :
Get-ActiveSyncDevice | ft


ActiveSync-Statistik eines Postfaches :
Get-ActiveSyncDeviceStatistics -mailbox "Mail Adresse des Benutzers"


Alle ActiveSync Geräte der OU “Ausgeschiedene User” löschen :
Get-ActiveSyncDevice -OrganizationalUnit "Ausgeschiedene User" | Remove-ActiveSyncDevice


Quellen :

chilltimes.de
frankysweb.de
ex201.de

“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)