POWERSHELL

EWS Managed API Demo: Impersonation

Andres Bohren
Hallo zusammen, Ich habe mich die letzten Tage ein bisschen mit dem Exchange Web Service Managed API beschäftigt. Dabei habe ich mit Visual Basic 2008 Express und Powershell herumgetüftelt. Die grösste Herausforderung war jeweils funktionierenden Code von Visual Basic nach Powershell zu portieren. Will man auf andere Mailboxen zugreifen benötigt man Impersonation. Das ist unter folgenden URLs Dokumentiert: http://msdn.microsoft.com/en-us/library/dd633680(v=exchg.80).aspx http://msdn.microsoft.com/en-us/library/bb204095(EXCHG.140).aspx Damit Impersonation genutzt werden kann muss die Rolle "ApplicationImpersonation" zugewiesen werden

EWS Managed API Demo: Searchfilter

Andres Bohren
Hallo zusammen, Nachdem ich mich ein bisschen in die Managed API von EWS eingearbeitet habe, wollte ich nach bestimmten Elementen suchen. Das geht am besten über einen SearchFilter. Das Kernstück ist hier in untenstehendem Code dargestellt. #Suche nach Elementen welche eine bestimmte MessageClass aufweisen $MySearchFilter = New-Object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::ItemClass, "IPM.Schedule.Meeting.Resp.Pos") #Suche nach Elementen welche den gesuchten String im Subject enthalten $MySearchFilter = New-Object Microsoft.Exchange.WebServices.Data.SearchFilter+ContainsSubstring([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::Subject, "TechTalk") $View = New-Object Microsoft.Exchange.WebServices.Data.ItemView(100) $ExResult = $EWService.

EWS Managed API Demo: SearchFilterCollection

Andres Bohren
Hallo zusammen, Wie SerachFilter funktionieren habe ich euch ja schon im vorhergehenden Artikel erklärt. Was wenn man aber nun mehr als nur ein Suchkriterium anwenden möchte? Dann nimmt man eine SearchFilterCollection. Der relevante Code dazu ist untenstehend: $SearchFilter1 = New-Object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::ItemClass, "IPM.Schedule.Meeting.Request") $SearchFilter2 = New-Object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::ItemClass, "IPM.Schedule.Meeting.Resp.Pos") $SearchFilter3 = New-Object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::ItemClass, "IPM.Schedule.Meeting.Resp.Tent") $SearchFilter4 = New-Object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::ItemClass, "IPM.Schedule.Meeting.Resp.Neg") $MySearchFilterCollection = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+SearchFilterCollection([Microsoft.Exchange.WebServices.Data.LogicalOperator]::Or) $MySearchFilterCollection.Add($SearchFilter1) $MySearchFilterCollection.Add($SearchFilter2) $MySearchFilterCollection.Add($SearchFilter3) $MySearchFilterCollection.Add($SearchFilter4) $View = New-Object Microsoft.Exchange.WebServices.Data.ItemView(1000) $ExResult = $EWService.

Get All Mailbox Permissions with Powershell

Andres Bohren
Hallo zusammen, Ich habe mir ein Powershell Script gebaut, welches die wichtigsten Mailboxpermissions ausliest und darstellt. Hier das Script - falls etwas mit dem Copy Paste nicht funktioniert kann es hier heruntergeladen werden. ################################################################################ # Show Mailbox and MAPI Permissions of specified Mailbox in Exchange 2010 # Version 1.0 / 07.03.2012 Andres Bohren - Intitial Version ################################################################################ #/*MBX Permission*/ [string]$Email = "boa@icewolf.ch" [string]$Mailbox = Get-Mailbox -Identity $Email [string]$sam = $Mailbox.SamAccountName

Exchange Environment Report

Andres Bohren
Hallo zusammen, Ich habe nach einem Exchange Report gesucht, welcher mir folgende Daten liefert: Serverinformationen Anzahl Mailboxen pro Datenbank DB Whitespace Freier Disk Space Da habe ich was cooles gefunden - Steve Goodman hat ein super Powershell Script erstellt. Damit kann man sich die Reports auch bequem mailen lassen. http://www.stevieg.org/2011/06/exchange-environment-report/ Mit dem Parameter "-ScheduleAs:DOMAIN\user" wird auch gleich ein Sheduled Task angelegt. powershell -c "pushd C:\Install\EnvironmentReport; C:\Install\EnvironmentReport\Get-ExchangeEnvironmentReport.ps1 -HTMLReport c:\report.html -SendMail:$true -MailFrom:admin@icewolf.ch -MailTo:a.

Powershell pipe output to Clipboard

Andres Bohren
Hallo zusammen. Ich bin kürzlich über eine coole Powershell funktion gestolpert. Mit | clip kann der output direkt in die Zwischenablage (clipboard) gepiped werden. Das erstpart mühsames markieren und kopieren. clip /? Get-Service | clip Nun ist der Output von Get-Service in der Zwischenablage. Toll oder? Grüsse Andres Bohren

Tail with Powershell

Andres Bohren
Hallo zusammen, Wer kennt das nicht, ein Logfile wird von einem Programm geschrieben. Dauernd den Texteditor zu öffnen und wieder zu schliessen, nur um zu sehen ob eine neue Zeile geschrieben wurde, das kann es auf die Dauer nicht sein. Unix Unter Unix gibt es den Tail Befehl. http://de.wikipedia.org/wiki/Tail_(Unix) tail -f [Pfad / Dateiname] Powershell Das ganze geht aber auch mit Powershell Get-Content [Pfad / Dateinahme] -Wait Baretail Oder man greift gleich zu einer Freeware wie Baretail, bei welcher auch gleich ein Syntax Highlighting möglich ist.

How to document your Powershell Scripts

Andres Bohren
Hallo zusammen, Fügt man einem Powershell Script den PARAM Bloch hinzu, so kann man die Parameter mit den Tabs auswählen und mit help [scriptfile.ps1] wird die Synthax ausgegeben. PARAM ( [string]$Domain = "test.com", [string]$Email = "@test.com" ) Fügt man noch die folgenden Zeilen hinzu, so hat man eine vollständige Online Dokumentation. <# .SYNOPSIS A summary of what this script does Appears in all basic, -detailed, -full, -examples .DESCRIPTION A more in depth description of the script Should give script developer more things to talk about Becomes: "

Pharse XML Files with Powershell and show results in a chart

Andres Bohren
Hallo zusammen, Habe mir aufgrund des Eurotiefstands mal ein Powershell zur Anzeige des Eurokurses geschrieben. Den Eurokurs gibts als XML zum Pharsen hier: http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml Schon cool, wie einfach es ist XML Files mit Powershell zu pharsen. $xml = New-Object xml $xml.Load('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml') $xml.Envelope.Cube.Cube $xml.Envelope.Cube.Cube Das ganze kann in ein Array ($allrates) gepackt werden und dann ausgewertet werden $xml = New-Object xml $xml.Load('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml') $allrates = @{} $xml.Envelope.Cube.Cube.Cube | ForEach { $currency = $_.

Remove sIDHistory

Andres Bohren
Hallo zusammen, Die sIDHistory wird ja in Migrationsszenarien verwendet um mit dem neuen Benutzer auf Ressourcen in der alten Domain zugreifen zu können. Versucht man das Attribut sIDHistory im AD zu ändern... ...erhält man ein "Access denied" Dies ist auch in ADSI Edit so. Fazit: Das Attribut sIDHistory lässt sich weder in "ADSI Edit" noch in "Active Directory Users and Computers" bearbeiten. Und das, obwohl der Account Miglied von "Schema Admins, Enterprise Admins, Domain Admins"