<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>codingstube &#187; Microsoft</title>
	<atom:link href="http://codingstube.de/category/windows/feed/" rel="self" type="application/rss+xml" />
	<link>http://codingstube.de</link>
	<description>Ein weiterer WordPress-Blog</description>
	<lastBuildDate>Thu, 15 Mar 2012 09:54:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>[Script]Mailbox Größe im Vergleich zum Quota/Kontingent</title>
		<link>http://codingstube.de/2012/03/scriptmailbox-grose-im-vergleich-zum-quotakontingent/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=scriptmailbox-grose-im-vergleich-zum-quotakontingent</link>
		<comments>http://codingstube.de/2012/03/scriptmailbox-grose-im-vergleich-zum-quotakontingent/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 10:15:52 +0000</pubDate>
		<dc:creator>root</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://codingstube.de/2012/03/scriptmailbox-grose-im-vergleich-zum-quotakontingent/</guid>
		<description><![CDATA[Damit die Mailboxgröße nicht überläuft, macht es natürlich Sinn, Quotas bzw. Beschränkungen auf die Postfächer festzulegen. Wir haben nun einige Postfächer mit keiner Größenbeschränkung die schon etwas größer sind und diese wollen nicht gleich gesperrt werden. Deswegen habe ich mir gedacht, dass es sinnvoll wäre, eine Gegenüberstellung der Mailboxsize und dem gesetzten Quota aufzulisten. Mit [...]]]></description>
			<content:encoded><![CDATA[<p>Damit die Mailboxgröße nicht überläuft, macht es natürlich Sinn, Quotas bzw. Beschränkungen auf die Postfächer festzulegen.</p>
<p>Wir haben nun einige Postfächer mit keiner Größenbeschränkung die schon etwas größer sind und diese wollen nicht gleich gesperrt werden. Deswegen habe ich mir gedacht, dass es sinnvoll wäre, eine Gegenüberstellung der Mailboxsize und dem gesetzten Quota aufzulisten. Mit den zwei Befehlen <em>Get-Mailbox</em> und <em>Get-MailboxStatistics</em> bekommt man beide Informationen sehr einfach angezeigt.</p>
<p>Weiterhin werden bei uns Postfächer u.a. mit dem customAttribute1 separiert. Nun gilt es diese schön geordnet nebeneinander aufzuführen. Kurz und knapp, anbei das Script und das Ergebnis in einer csv-Datei. Man kann frei wählen, ob man die Postfächer nach dem customAttribute1 beschränkt oder eben alle aufruft.</p>
<p>./Get-MailboxQuotaUsage.ps1 &#8220;customAttribute1&#8243;</p>
<p>Nun das Ergebnis:</p>
<p><img src="http://codingstube.de/wp-content/uploads/2012/03/get-mailboxquotausage.png" alt="Get-MailboxQuotaUsage" width="465" height="92" align="left" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<br />
&nbsp;<br />
Und das Skript:</p>
<pre class="brush: powershell; title: ; notranslate">
## Comparsion MailboxSize and Quota Script written by Marius Schloten 

$RptCollection = @()
$cattribute = &quot;&quot;

function CovertBitValue($String){
    $numItempattern = '(?=\().*(?=bytes)'
    $matchedItemsNumber = [regex]::matches($String, $numItempattern)
    $Mb = [INT64]$matchedItemsNumber[0].Value.Replace(&quot;(&quot;,&quot;&quot;).Replace(&quot;,&quot;,&quot;&quot;)
    return [math]::round($Mb/1048576,0)
}  

#In my case we filter some users with the customAttribute1, you can use this
#parameter. If there is no parameter all mailboxes will be used
if ($Args.count -lt 1) {

    'No Parameter! customAttribute is not set. Getting all mailboxes!'
    'Usage:'
    './Get-MailboxQuotaUsage.ps1 with customAttribute1 (e.g. &quot;CompanyName&quot;)'
    ''
	'./Get-MailboxQuotaUsage.ps1 &quot;contoso&quot;'
	''
	$cattribute = &quot;*&quot;
}
else{
$cattribute = $args[0]
}

#Get-Mailboxes, with or without 'customAttribute1'
$mailboxes = Get-Mailbox -ResultSize Unlimited | ?{$_.customattribute1 -like $cattribute}
$mailboxes | ForEach-Object{
$username = $_.SamAccountName
$MailboxName = $_.Name.ToString()
&quot;Processing Mailbox : &quot; + $MailboxName  

$rptObj = &quot;&quot; | select  MailboxName,Mailboxsize,SetQuota,customAttribute
$rptObj.MailboxName = $MailboxName
$rptObj.SetQuota = $_.ProhibitSendQuota

$MailboxStats = Get-MailboxStatistics $username
$ts = CovertBitValue($MailboxStats.TotalItemSize.ToString())
&quot;Total Size : &quot; + $MailboxStats.TotalItemSize
$rptObj.MailboxSize = $MailboxStats.TotalItemSize
&quot;SetQuota : &quot; + $_.ProhibitSendQuota
$rptObj.customAttribute = $_.customattribute1

$RptCollection +=$rptObj
}
#Sort items by MailboxSize descending
$RptCollection = $RptCollection | Sort-Object MailboxSize -Descending
$RptCollection | Export-Csv -NoTypeInformation  c:\usageReport.csv
</pre>
]]></content:encoded>
			<wfw:commentRss>http://codingstube.de/2012/03/scriptmailbox-grose-im-vergleich-zum-quotakontingent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>msExchDelegateListLink per Powershell bearbeiten</title>
		<link>http://codingstube.de/2011/09/msexchdelegatelistlink-per-powershell-bearbeiten/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=msexchdelegatelistlink-per-powershell-bearbeiten</link>
		<comments>http://codingstube.de/2011/09/msexchdelegatelistlink-per-powershell-bearbeiten/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 13:15:44 +0000</pubDate>
		<dc:creator>root</dc:creator>
				<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://codingstube.de/2011/09/msexchdelegatelistlink-per-powershell-bearbeiten/</guid>
		<description><![CDATA[Nachfassend zu meinem Artikel (OUTLOOK ZEIGT EINGEBUNDENE POSTFÄCHER DOPPELT AN) habe ich nach einem Weg gesucht die msExchDelegateListLink per Powershell zu bearbeiten. Das folgende Script entfernt einen bestimmten Benutzer in der msExchDelegateListLink eines Postfaches: $Mailbox = Get-Mailbox $Identity #Postfach, welches bearbeitet werden soll $removeUser = &#8220;user&#8221; #Benutzer, welcher aus der msExchDelegateListLink entfernt werden soll if [...]]]></description>
			<content:encoded><![CDATA[<p>Nachfassend zu meinem <a href="http://codingstube.de/2011/09/outlook-zeigt-eingebundene-postfacher-doppelt-an/" target="_blank">Artikel</a> (OUTLOOK ZEIGT EINGEBUNDENE POSTFÄCHER DOPPELT AN) habe ich nach einem Weg gesucht die msExchDelegateListLink per Powershell zu bearbeiten.</p>
<p>Das folgende Script entfernt einen bestimmten Benutzer in der msExchDelegateListLink eines Postfaches:</p>
<blockquote>
<p>$Mailbox = Get-Mailbox $Identity #Postfach, welches bearbeitet werden soll<br />
$removeUser = &#8220;user&#8221; #Benutzer, welcher aus der msExchDelegateListLink entfernt werden soll</p>
<p>if (!$Mailbox)<br />
{<br />
throw &#8220;Could not find Mailbox $($Identity)&#8221;<br />
}<br />
#Set the domain controller<br />
$DomainController = $Mailbox.OriginatingServer</p>
<p># If the mailbox permission was successfully added, remove the auto mapping using ADSI<br />
$LDAPUser=[ADSI]&#8220;<a href="ldap://$($DomainController)/$($Mailbox.DistinguishedName">LDAP://$($DomainController)/$($Mailbox.DistinguishedName</a>)&#8221;<br />
$LDAPUser.msExchDelegateListLink.Remove(((Get-Mailbox $removeUser).DistinguishedName))<br />
$LDAPUser.SetInfo()</p>
</blockquote>
<p>Wenn man dieses Script in eine schöne Schleife verpackt, kann man sich auch hiermit viel Arbeit ersparen!</p>
]]></content:encoded>
			<wfw:commentRss>http://codingstube.de/2011/09/msexchdelegatelistlink-per-powershell-bearbeiten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Outlook zeigt eingebundene Postfächer doppelt an</title>
		<link>http://codingstube.de/2011/09/outlook-zeigt-eingebundene-postfacher-doppelt-an/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=outlook-zeigt-eingebundene-postfacher-doppelt-an</link>
		<comments>http://codingstube.de/2011/09/outlook-zeigt-eingebundene-postfacher-doppelt-an/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 07:48:45 +0000</pubDate>
		<dc:creator>root</dc:creator>
				<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://codingstube.de/2011/09/outlook-zeigt-eingebundene-postfacher-doppelt-an/</guid>
		<description><![CDATA[Ich bin in den letzten Tagen mehrfach auf ein Problem Umstand gestoßen, dass in Outlook einige eingebundene Postfächer doppelt angezeigt werden. Natürlich schaut man erst einmal in die Kontoeinstellungen des Benutzers, ob unter &#8220;Weitere Einstellungen&#8221; &#8211; &#8220;Erweitert&#8221; das Postfach korrekt eingebunden wurde. Das Problempostfach erschien korrekterweise nur einmal. Durch ein wenig Recherche stieß ich auf [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Ich bin in den letzten Tagen mehrfach auf ein <del>Problem</del> Umstand gestoßen, dass in Outlook einige eingebundene Postfächer doppelt angezeigt werden.</p>
<p style="text-align: left;"><img src="http://codingstube.de/wp-content/uploads/2011/09/allgemin.png" alt="allgemin" width="315" height="185" align="right" /></p>
<p style="text-align: left;">Natürlich schaut man erst einmal in die Kontoeinstellungen des Benutzers, ob unter &#8220;Weitere Einstellungen&#8221; &#8211; &#8220;Erweitert&#8221; das Postfach korrekt eingebunden wurde. Das Problempostfach erschien korrekterweise nur einmal. Durch ein wenig Recherche stieß ich auf die <a href="http://blogs.technet.com/b/exchange/archive/2010/08/25/3410675.aspx" target="_blank">Ankündigung</a> des SP1 für den Exchange Server 2010.</p>
<blockquote><p>&#8220;On the client side features like auto mapping of shared mailboxes to user’s Outlook 2010 profiles will remove a support headache.&#8221;</p></blockquote>
<p style="text-align: left;">Wenn man einem Benutzer volle Zurgriffsrechte auf einem anderen Postfach vergibt, wird im Active Directory ein Attribut gesetzt: <strong>msExchDelegateListLink</strong>. Dieses Feld kann mehrere Attribute beinhalten und zwar eine Liste von DNs (Distinguished Names), welche den Vollzugriff auf dieses Postfach haben.</p>
<p style="text-align: left;" align="center"><img src="http://codingstube.de/wp-content/uploads/2011/09/attribut.png" alt="attribut" width="450" height="398" /></p>
<p style="text-align: left;">Wurde also einem Benutzer der Vollzugriff auf ein anderes Postfach gewährt, erscheint dieser in dem Attribut msExchDelegateListLink.</p>
<p style="text-align: left;">Beim nächsten Start von Outlook2010 oder eines aktuellen Outlook 2007 wird automatisch nach diesen Werten in der AD geschaut und das Postfach erscheint einige Sekunden nach dem Start in Outlook.</p>
<p style="text-align: left;">Wenn dies nicht gewollt ist, kann der Wert bei diesem Attribut einfach gelöscht werden und schon erscheint das Postfach nur noch einmal in Outlook. Auf der anderen Seite kann der Admin diese Werte befüllen und der Anwender brauch sich nicht mehr durch die Optionsfenster zu wuseln. Es ist nur zu beachten, dass man nicht beide Varianten durchführt!</p>
]]></content:encoded>
			<wfw:commentRss>http://codingstube.de/2011/09/outlook-zeigt-eingebundene-postfacher-doppelt-an/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[TerminalServer/PS]Einzelnen Benutzer zur bestimmten Uhrzeit abmelden</title>
		<link>http://codingstube.de/2011/09/terminalserverpseinzelnen-benutzer-zur-bestimmten-uhrzeit-abmelden/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=terminalserverpseinzelnen-benutzer-zur-bestimmten-uhrzeit-abmelden</link>
		<comments>http://codingstube.de/2011/09/terminalserverpseinzelnen-benutzer-zur-bestimmten-uhrzeit-abmelden/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 13:50:14 +0000</pubDate>
		<dc:creator>root</dc:creator>
				<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://codingstube.de/2011/09/terminalserverpseinzelnen-benutzer-zur-bestimmten-uhrzeit-abmelden/</guid>
		<description><![CDATA[Möchte man Terminalserver User nach einer bestimmten Uhrzeit trennen, ist dies in den Terminalserver Einstellungen kein Problem, solange dies alle Benutzer betrifft. Nun hatte ich die Anforderung dies auf nur einen Benutzer zu beschränken. Mit Hilfe von Powershell und qwinsta (= Query WINdows STAtion) konnte ich den betroffenden Benutzer filtern und die Terminalserver Session abmelden. [...]]]></description>
			<content:encoded><![CDATA[<p>Möchte man Terminalserver User nach einer bestimmten Uhrzeit trennen, ist dies in den Terminalserver Einstellungen kein Problem, solange dies alle Benutzer betrifft.</p>
<p>Nun hatte ich die Anforderung dies auf nur einen Benutzer zu beschränken. Mit Hilfe von Powershell und <a href="http://www.google.de/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CBwQFjAA&amp;url=http%3A%2F%2Ftechnet.microsoft.com%2Fde-de%2Flibrary%2Fcc731503(v%3Dws.10).aspx&amp;ei=PdFkTpuRJc7zsgaXno2XCg&amp;usg=AFQjCNGQ5pAIRrXF82qb9dKNC1oTGPdhlA">qwinsta (= Query WINdows STAtion)</a> konnte ich den betroffenden Benutzer filtern und die Terminalserver Session abmelden.</p>
<p>Dabei spielt es keine Rolle, ob der Benutzer noch aktiv ist oder im Status &#8220;getrennt&#8221; steht.</p>
<p><strong>Wichtig</strong>: Zurzeit ist das Skript für einen deutschen Terminalserver ausgerichtet, lässt sich aber leicht bei <strong><em><u>&#8220;Select-Object benutzername | %{$_.Benutzername}&#8221;</u></em></strong> anpassen!</p>
<p>Hier das kleine Script:</p>
<pre class="brush: bash; title: ; notranslate">
//Benutzername anpassen
$shortusername = &quot;username&quot;
function isNumeric ($x) {
try {
0 + $x | Out-Null
return $true
} catch {
return $false
}
}
$q = (qwinsta | foreach { (($_.trim() -replace &quot;\s+&quot;,&quot;,&quot;))} | ConvertFrom-Csv)
$id = $q -match $shortusername | Select-Object benutzername | %{$_.Benutzername}
&lt;p&gt;if(isNumeric($id))
{
$id
}else{
$id = $q -match $shortusername | Select-Object ID | %{$_.ID}
}
logoff $id</pre>
<p>Der Benutzername muss in dem Script hinterlegt werden!</p>
<p>Nach der Hinterlegung im Task Scheduler wird der Benutzer nun täglich um 21 Uhr abgemeldet, ohne das andere User betroffen sind!</p>
]]></content:encoded>
			<wfw:commentRss>http://codingstube.de/2011/09/terminalserverpseinzelnen-benutzer-zur-bestimmten-uhrzeit-abmelden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ForeFront TMG Lern Videos und Trainings</title>
		<link>http://codingstube.de/2011/05/forefront-tmg-lern-videos-und-trainings/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=forefront-tmg-lern-videos-und-trainings</link>
		<comments>http://codingstube.de/2011/05/forefront-tmg-lern-videos-und-trainings/#comments</comments>
		<pubDate>Thu, 05 May 2011 17:58:24 +0000</pubDate>
		<dc:creator>root</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://codingstube.de/?p=872</guid>
		<description><![CDATA[Leider war ich bei meiner Suche nach Trainings-Videos für den Microsoft Forefront z.B. bei Trainsignal oder CBT-Nuggets nicht erfolgreich. Microsoft selbst bietet aber einige Videos und Trainingseinheiten an. Diese möchte ich natürlich keinem vorenthalten: Ramp Up &#8211; Implementing Forefront Threat Management Gateway 2010 http://technet.microsoft.com/en-us/gg467329 Events and Webcasts http://www.microsoft.com/forefront/threat-management-gateway/en/us/events-webcasts.aspx Videos http://www.microsoft.com/events/series/forefront.aspx?tab=videos &#160;]]></description>
			<content:encoded><![CDATA[<p>Leider war ich bei meiner Suche nach Trainings-Videos für den Microsoft Forefront z.B. bei Trainsignal oder CBT-Nuggets nicht erfolgreich.</p>
<p>Microsoft selbst bietet aber einige Videos und Trainingseinheiten an. Diese möchte ich natürlich keinem vorenthalten:</p>
<blockquote><p>Ramp Up &#8211; Implementing Forefront Threat Management Gateway 2010<br />
<a href="http://technet.microsoft.com/en-us/gg467329">http://technet.microsoft.com/en-us/gg467329</a></p>
<p><a href="http://technet.microsoft.com/en-us/gg467329"></a><br />
Events and Webcasts<br />
<a href="http://www.microsoft.com/forefront/threat-management-gateway/en/us/events-webcasts.aspx">http://www.microsoft.com/forefront/threat-management-gateway/en/us/events-webcasts.aspx</a></p>
<p><a href="http://www.microsoft.com/forefront/threat-management-gateway/en/us/events-webcasts.aspx"></a><br />
Videos<br />
<a href="http://www.microsoft.com/events/series/forefront.aspx?tab=videos">http://www.microsoft.com/events/series/forefront.aspx?tab=videos</a></p></blockquote>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://codingstube.de/2011/05/forefront-tmg-lern-videos-und-trainings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Benuteranlage GUI via Powershell</title>
		<link>http://codingstube.de/2010/08/benuteranlage-gui-via-powershell/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=benuteranlage-gui-via-powershell</link>
		<comments>http://codingstube.de/2010/08/benuteranlage-gui-via-powershell/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 10:28:29 +0000</pubDate>
		<dc:creator>MS</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://codingstube.de/?p=796</guid>
		<description><![CDATA[CreateUserGUI_V1.ps1: Einer der anstregendsten Aufgaben, die Administratoren durchführen, ist das Anlegen neuer Benutzer. Wenn wir 50 bis 100 Nutzer anlegen müssen, wird man uns bei einer Reihe von sehr starren Mausklicks beobachten können. In diesem Fall sollte muss ein Powershell-Skript mit Hilfe einer csv-Datei zum Einsatz kommen. Die o.a. GUI ist eher für die Benutzeranlage [...]]]></description>
			<content:encoded><![CDATA[<p><strong>CreateUserGUI_V1.ps1:</strong></p>
<p><a href="http://codingstube.de/wp-content/uploads/2010/08/CreateUserGUIV1.png"><img src="http://codingstube.de/wp-content/uploads/2010/08/CreateUserGUIV1.png" alt="" title="CreateUserGUIV1" class="alignnone size-full wp-image-797" /></a></p>
<p>Einer der anstregendsten Aufgaben, die Administratoren durchführen, ist das Anlegen neuer Benutzer. Wenn wir 50 bis 100 Nutzer anlegen müssen, wird man uns bei einer Reihe von sehr starren Mausklicks beobachten können. In diesem Fall sollte muss ein Powershell-Skript mit Hilfe einer csv-Datei zum Einsatz kommen. </p>
<p>Die o.a. GUI ist eher für die Benutzeranlage für einige wenige Benutzer während des Betriebs gedacht. Diese ist auf unseren Betrieb angepasst und erstellt zusätzlich auf einem Fileserver ein Benutzerordner, wo nur der angelegte Benutzer Schreibrechte hat + Administratoren.</p>
<p>Das Skript ist einfach aufgebaut. Man trägt die Daten für den Benutzer ein, wählt die OU und die Gruppen aus, wo der oder die Benutzer Mitglied werden soll.</p>
<pre class="brush: powershell; title: ; notranslate">[System.Reflection.Assembly]::LoadWithPartialName(&quot;System.Drawing&quot;)
[System.Reflection.Assembly]::LoadWithPartialName(&quot;System.windows.forms&quot;) 

[system.windows.forms.messagebox]::Show(&quot;Only run in Quest Powershell!&quot;)

Function createmailbox{
	#Pfad zum Laufwerk, welches ggf. für den Benutzer angelegt werden soll
	$path = &quot;\Server-IP-Addressdatenaustausch&quot;

	#Richtige Domäne eintregen
	$objUser = [ADSI]“LDAP://localhost:389/dc=domain,dc=com”

	$OU = $OUhash1[$ouOuNameDrop.SelectedItem.ToString()]
	$OU = $OU.substring($OU.lastindexof(&quot;/&quot;)+1)
	$TSOU=[ADSI]“LDAP://localhost:389/ou=$OU,OU=Companies,dc=domain,dc=com”

	if($TSOU.true){

	foreach($row in $dgDataGrid.rows){
		if ($row.Cells[0].Value -ne $null){

			$CN=$row.Cells[1].Value + &quot; &quot; + $row.Cells[0].Value								

			$SN=$row.Cells[1].Value									

			$title=&quot;#&quot;

			$description=$row.Cells[3].Value

			$department=&quot;#&quot;

			$streetAddress=$row.Cells[5].Value

			$postalcode=$row.Cells[4].Value

			$telephoneNumber=$row.Cells[6].Value

			$givenName=$row.Cells[0].Value	

			$company=$row.Cells[7].Value	

			$mail=&quot;#&quot;

			$userPrincipalName=$row.Cells[2].Value + &quot;@domain.com&quot;

			$Samaccountname=$row.Cells[2].Value

			$group1Name=$UD.Gruppe1inOU

			$group2Name=$UD.Gruppe2inOU

			$group3Name=$UD.Gruppe3

			$group4Name=$UD.Gruppe4

			$group5Name=$UD.Gruppe5

			$group6Name=$UD.Gruppe6

			$group7Name=$UD.Gruppe7

			$Location=&quot;Deutschland&quot;

			$User=$TSOU.create(“user”,”cn=$cn”)

			$User.Put(“sAMAccountName”,$Samaccountname)

			$User.put(“SN”,$SN)

			$User.put(“Title”,$title)

			$User.put(“Description”,$description)

			$User.put(“department”,$department)

			$User.put(“streetAddress”,$streetAddress)

			$User.put(‘telephoneNumber’,$telephoneNumber)

			$User.put(‘givenName’,$givenName)

			$User.put(‘company’,$company)

			$User.put(‘mail’,$mail)

			$User.put(‘L’,$Location)

			$User.put(‘userPrincipalName’,$userPrincipalName)

			$User.setinfo()

			$User.psbase.Invoke(“SetPassword”,”Caliber1”)

			$User.psbase.InvokeSet(‘Accountdisabled’,$false)

			$User.psbase.CommitChanges()

			write-host &quot;Bitte 5 Sekunden warten - Benutzer wird angelegt...&quot; + $result
			[System.Threading.Thread]::Sleep(5000)
			[system.windows.forms.messagebox]::Show(&quot;User &quot; + $row.Cells[0].Value + &quot; &quot; + $row.Cells[1].Value + &quot; created&quot;)

			foreach ($objItem in $objListbox.SelectedItems)
   			{
				$group = $Grouphash1[$objItem]
				$groupname = $group.substring($group.lastindexof(&quot;/&quot;)+1)
				Write-Host $groupname

				Add-QADGroupMember  -Identity $groupname -Member $row.Cells[2].Value
			}

			if ($checkbox.Checked)
			{

			write-host &quot;Datenaustauschlaufwerk anlegen...&quot;

			if (!(Test-Path ($path + $row.Cells[2].Value))){
				new-item -path $path -name $row.Cells[2].Value -type directory
			}else {
				Write-Host $row.Cells[2].Value &quot; folder already exists&quot;
 			}

  			$Acl = Get-Acl ($path+ &quot;&quot; + $row.Cells[2].Value)
    		$Ar = New-Object system.security.accesscontrol.filesystemaccessrule($row.Cells[2].Value,&quot;Modify&quot;,&quot;ContainerInherit,ObjectInherit&quot;,&quot;None&quot;,&quot;Allow&quot;)
    		$acl.setAccessRule($ar)
    		Set-Acl ($path + &quot;&quot; + $row.Cells[2].Value) $acl

			Write-Host &quot;Datenaustauschlaufwerk wurde erfolgreich angelegt&quot;
			}
		}
	}

	}else{Write-host “Error OU doesn’t exist to proceed further, please create one” -foregroundcolor RED}

}

$OUhash1 = @{ }
$Grouphash1 = @{ }
$MBhash1 = @{ }

$form = new-object System.Windows.Forms.form
$form.Text = &quot;Quick User Create Form&quot;
$form.size = new-object System.Drawing.Size(910,520) 

$msTable = New-Object System.Data.DataTable

$msTable.TableName = &quot;GroupName&quot;
$msTable.Columns.Add(&quot;FirstName&quot;)
$msTable.Columns.Add(&quot;LastName&quot;)
$msTable.Columns.Add(&quot;UserName&quot;)
$msTable.Columns.Add(&quot;Description&quot;)
$msTable.Columns.Add(&quot;Postal-Code&quot;)
$msTable.Columns.Add(&quot;StreetAddress&quot;)
$msTable.Columns.Add(&quot;Telephone&quot;)
$msTable.Columns.Add(&quot;Company&quot;)

# Add DataGrid View

$dgDataGrid = new-object System.windows.forms.DataGridView
$dgDataGrid.Location = new-object System.Drawing.Size(10,10)
$dgDataGrid.size = new-object System.Drawing.Size(870,200)
$dgDataGrid.AutoSizeRowsMode = &quot;AllHeaders&quot;
$form.Controls.Add($dgDataGrid)

$dgDataGrid.DataSource = $msTable

# Add OU Drop Down
$ouOuNameDrop = new-object System.Windows.Forms.ComboBox
$ouOuNameDrop.Location = new-object System.Drawing.Size(100,260)
$ouOuNameDrop.Size = new-object System.Drawing.Size(230,30)
$ouOuNameDrop.Items.Add(&quot;/Users&quot;)
$OUhash1.Add(&quot;/Users&quot;,&quot;Users&quot;)
$root = [ADSI]''
$searcher = new-object System.DirectoryServices.DirectorySearcher($root)
$searcher.Filter = '(objectClass=organizationalUnit)'
$searcher.PropertiesToLoad.Add(&quot;canonicalName&quot;)
$searcher.PropertiesToLoad.Add(&quot;Name&quot;)
$searcher1 = $searcher.FindAll()
foreach ($person in $searcher1){
[string]$ent = $person.Properties.canonicalname
$OUhash1.Add($ent.substring($ent.indexof(&quot;/&quot;),$ent.length-$ent.indexof(&quot;/&quot;)),$ent)
$ouOuNameDrop.Items.Add($ent.substring($ent.indexof(&quot;/&quot;),$ent.length-$ent.indexof(&quot;/&quot;)))
}
$form.Controls.Add($ouOuNameDrop)

$objListbox = New-Object System.Windows.Forms.Listbox
$objListbox.Location = New-Object System.Drawing.Size(435,220)
$objListbox.Size = New-Object System.Drawing.Size(445,250) 

$objListbox.SelectionMode = &quot;MultiExtended&quot;

$objListbox.Height = 250

$form.Controls.Add($objListbox)

# Add OU DropLable
$ouOuNamelableBox = new-object System.Windows.Forms.Label
$ouOuNamelableBox.Location = new-object System.Drawing.Size(10,260)
$ouOuNamelableBox.size = new-object System.Drawing.Size(100,20)
$ouOuNamelableBox.Text = &quot;OU Name&quot;
$form.Controls.Add($ouOuNamelableBox) 

# Add Group Drop Down
$searcherGroup = new-object System.DirectoryServices.DirectorySearcher($root)
$searcherGroup.Filter = '(objectClass=group)'
$searcherGroup.PropertiesToLoad.Add(&quot;canonicalName&quot;)
$searcherGroup1 = $searcherGroup.FindAll()
foreach ($person2 in $searcherGroup1){
[string]$ent = $person2.Properties.canonicalname
$Grouphash1.Add($ent.substring($ent.indexof(&quot;/&quot;),$ent.length-$ent.indexof(&quot;/&quot;)),$ent)
$objListbox.Items.Add($ent.substring($ent.indexof(&quot;/&quot;),$ent.length-$ent.indexof(&quot;/&quot;)))
}  

# Add Group DropLable
$snServerNamelableBox = new-object System.Windows.Forms.Label
$snServerNamelableBox.Location = new-object System.Drawing.Size(380,220)
$snServerNamelableBox.size = new-object System.Drawing.Size(100,20)
$snServerNamelableBox.Text = &quot;Groups:&quot;
$form.Controls.Add($snServerNamelableBox) 

# create radiobutton1
$checkbox = New-Object Windows.Forms.checkbox
$checkbox.text = &quot;Datenaustauschlaufwerk anlegen?&quot;
$checkbox.height = 20
$checkbox.width = 200
$checkbox.top = 300
$checkbox.left =10
$form.controls.add($checkbox)

# Add Create Button

$crButton = new-object System.Windows.Forms.Button
$crButton.Location = new-object System.Drawing.Size(10,360)
$crButton.Size = new-object System.Drawing.Size(150,23)
$crButton.Text = &quot;Create User&quot;
$crButton.Add_Click({CreateMailbox})
$form.Controls.Add($crButton)

$form.topmost = $true
$form.Add_Shown({$form.Activate()})
$form.ShowDialog()
</pre>
]]></content:encoded>
			<wfw:commentRss>http://codingstube.de/2010/08/benuteranlage-gui-via-powershell/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Active Sync mit Exchange Server schlägt fehl &#8211; (z.B. iPhone &#8211; Keine Verbindung zum Server)</title>
		<link>http://codingstube.de/2010/06/active-sync-mit-exchange-server-schlagt-fehl-z-b-iphone-keine-verbindung-zum-server/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=active-sync-mit-exchange-server-schlagt-fehl-z-b-iphone-keine-verbindung-zum-server</link>
		<comments>http://codingstube.de/2010/06/active-sync-mit-exchange-server-schlagt-fehl-z-b-iphone-keine-verbindung-zum-server/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 14:22:24 +0000</pubDate>
		<dc:creator>root</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://codingstube.de/2010/06/active-sync-mit-exchange-server-schlagt-fehl-z-b-iphone-keine-verbindung-zum-server/</guid>
		<description><![CDATA[Die letzten Tage waren wirklich spannend. Bis vor dem iOS4 Update hatte ich kein Exchange Konto bei mir im Telefon eingetragen. Nun wollte ich das doch auch mal testen, Unified Inbox sei dank. Problembeschreibung Nun zum Problem: Serverdaten Domäne Benutzername Passwort alles eingetragen. Account wird überprüft, sollte funktionieren. Bei den Syncoptionen nur Mail gewählt und [...]]]></description>
			<content:encoded><![CDATA[<p>Die letzten Tage waren wirklich spannend. Bis vor dem iOS4 Update hatte ich kein Exchange Konto bei mir im Telefon eingetragen. Nun wollte ich das doch auch mal testen, Unified Inbox sei dank.</p>
<p><strong>Problembeschreibung</strong></p>
<p>Nun zum Problem:</p>
<ul>
<li>
<div>Serverdaten</div>
</li>
<li>
<div>Domäne</div>
</li>
<li>
<div>Benutzername</div>
</li>
<li>
<div>Passwort</div>
</li>
</ul>
<p>alles eingetragen. Account wird überprüft, sollte funktionieren. Bei den Syncoptionen nur Mail gewählt und schon konnte es losgehen, <del>nicht</del>.</p>
<p>Mail auf dem iPhone aufgerufen und die erste Meldung, die ich bekam, lautete &#8220;Die Verbindung zum Server ist fehlgeschlagen&#8221;. Natürlich alle Daten 5x geprüft, mit anderen Kollegen (bei denen das Exchange-Profil funktioniert) verglichen, ohne Ergebnis.</p>
<p>Mail.app auf dem iMac oder MacBook zeigt keinen Fehler an. Also Active Sync mit meinem Account hat wohl ein Problem.</p>
<p>Also die schöne Seite: <a href="https://www.testexchangeconnectivity.com/">https://www.testexchangeconnectivity.com/</a> aufgerufen und einen Test gestartet. Diese Seite testet den eigenen Exchange-Server und den angegeben Benutzeraccount auf diverse Konfigurationsprobleme u.a. mit ActiveSync.</p>
<p>Und es tauchte ein Fehler auf. Bei Aufruf von ActiveSync bekam ich einen Fehler 500 zurück. Berechtigungsproblem? Bin doch Exchange- und Domänenadmin?!</p>
<p><strong>Lösung</strong></p>
<p>Um es zu verkürzen. Lt. meiner Recherche tritt das Problem nur bei Adminkonten nach einer Exchange Migration auf. Ob dies nun &#8220;nur&#8221; Exchange-Admin-Accounts betrifft oder auch Domänen-Admins kann ich nicht genau sagen. Und zwar liegt es an der Berechtigung des Problemkontos. Dort wurden die Berechtigungen für diese Accounts nicht vererbt.</p>
<p>Um die Vererbung wieder zu aktivieren, startet den ADSI-Editor. Wählt den Namenskontext aus und navigiert zu dem Problemkonto. Dort unter den Reiter &#8220;Sicherheit&#8221; navigieren und die Vererbung analog zum folgenden Screenshot wieder aktivieren:</p>
<p style="text-align: center;"><a href="http://codingstube.de/wp-content/uploads/2010/06/Vererbung1.png"><img class="aligncenter size-full wp-image-791" title="Vererbung" src="http://codingstube.de/wp-content/uploads/2010/06/Vererbung1.png" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://codingstube.de/2010/06/active-sync-mit-exchange-server-schlagt-fehl-z-b-iphone-keine-verbindung-zum-server/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[How-To]Windows RDP Client 7 auf Windows Server 2003 x86 installieren</title>
		<link>http://codingstube.de/2010/05/how-towindows-rdp-client-7-auf-windows-server-2003-x86-installieren/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-towindows-rdp-client-7-auf-windows-server-2003-x86-installieren</link>
		<comments>http://codingstube.de/2010/05/how-towindows-rdp-client-7-auf-windows-server-2003-x86-installieren/#comments</comments>
		<pubDate>Tue, 18 May 2010 10:44:15 +0000</pubDate>
		<dc:creator>root</dc:creator>
				<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://codingstube.de/2010/05/how-towindows-rdp-client-7-auf-windows-server-2003-x86-installieren/</guid>
		<description><![CDATA[Der RDP-Client 7 ist normalerweise nur für folgende Betriebssysteme verfügbar: Windows XP Service Pack 3 (SP3), Windows Vista Service Pack 1 (SP1) und Windows Vista Service Pack 2 (SP2). Windows 7 und Windows Server 2008 R2 bringen diese Clientversion von Haus aus mit. Leider fehlt hier der Support vom Windows Server 2003. Beim Versuch den [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="Remote desktop connection icon" align="left" src="http://codingstube.de/wp-content/uploads/2010/05/remote_desktop_connection_icon.png" width="128" height="128" />Der RDP-Client 7 ist normalerweise nur für folgende Betriebssysteme verfügbar: Windows XP Service Pack 3 (SP3), Windows Vista Service Pack 1 (SP1) und Windows Vista Service Pack 2 (SP2).</p>
<p>Windows 7 und Windows Server 2008 R2 bringen diese Clientversion von Haus aus mit.</p>
<p>Leider fehlt hier der Support vom Windows Server 2003. Beim Versuch den Client dort zu installieren, bekommt man den freundlichen Hinweis, dass das Betriebssystem nicht unterstützt wird.</p>
<p>Erfreulicherweise klappt die Installation mit einem kleinen Workaround trotzdem.</p>
<p><strong>How-To:</strong></p>
<p>Als erstes braucht ihr den Client.</p>
<blockquote>
<p><a title="Download" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=72158b4e-b527-45e4-af24-d02938a95683">www.microsoft.com/downloads/details.aspx?FamilyId=72158b4e-b527-45e4-af24-d02938a95683</a></p>
</blockquote>
<p>Das Paket muss nun extrahiert werden. Öffnet die Kommandozeile und navigiert zum Downloadpaket. Danach gebt ihr folgenden Befehl ein:</p>
<blockquote>
<p>WindowsXP-KB969084-x86-deu.exe /extract</p>
</blockquote>
<p>Ihr werdet gefragt, wohin das Paket extrahiert werden soll. Speichert es am besten unter <strong>C:RDP70</strong>.</p>
<p>In dem neuen Ordner findet ihr den Unterordner update. Dort liegt die Datei <strong>update.inf</strong>. Öffnet diese mit dem Editor und ändert die oberen Einträge wie folgt:</p>
<blockquote>
<p>[Version]<br />
RebootRequired=0<br />
Signature = &#8220;$Windows NT$&#8221;<br />
LanguageType = %LangTypeValue%<br />
NtBuildToUpdate = 3790<br />
NtMajorVersionToUpdate = 5<br />
NtMinorVersionToUpdate = 2<br />
MaxNtBuildToUpdate = 3790<br />
MaxNtMajorVersionToUpdate = 5<br />
MaxNtMinorVersionToUpdate = 2<br />
MinNtServicePackVersion = 512<br />
MaxNtServicePackVersion = 512<br />
ThisServicePackVersion = 512<br />
CatalogFile = %SP_SHORT_TITLE%.cat</p>
</blockquote>
<p>Speichert die Datei mit folgendem Namen: <strong>update.inf.new</strong>. Die originale <strong>update.inf</strong> Datei benennt ihr in <strong>update.inf.old</strong> um.</p>
<p>So nun erstellen wir ein kleines Skript, welches das Update aufrufen soll. Dieses wird das Update mit der veränderten <strong>update.inf</strong> aufrufen und während der Installation die originale <strong>update.inf</strong> wieder zurückschreiben. Dies <del>gaukelt</del> gibt dem Update vor, es sei alles in Ordnung.</p>
<p>Das Skript sieht wie folgt aus:</p>
<p>&nbsp;</p>
<pre lang="winbatch">
@echo off

echo Das Paket installiert RDP 7.0 auf einem Windows Server 2003 x86.

echo Es wird in das Verzeichnis c:rdp70 gewechselt

c:

cd "C:RDP70update"

echo Die originale update.inf wird durch update.inf.new ersetzt

copy update.inf.new update.inf /y

echo Update ausführen

start update.exe

ping -n 1 -w 20 1.2.3.4&gt;nul

echo Ersetze modifizierte update.inf mit der originalen Version. Anonsten gibt der Installer einen Fehler aus.

echo Ggf. muss die Zahl hinter "ping -n 1 -w". Eine größere Nummer bedeutet eine größere Pause.

echo Wenn die Pause zu klein ist, dann erscheint ein Fehler, dass ein flasches Betriebssystem vorliegt.

echo Wenn die Pause zu groß ist, dann erscheint ein Fehler, dass die ini-Datei nicht verifiziert werden kann.

copy update.inf.old update.inf /y
</pre>
<p>Das Skript geht davon aus, dass das Paket unter <strong>C:RDP70</strong> liegt. Der Befehl <em>ping -n 1 -w 20 1.2.3.4 &gt; nul</em> muss ggf. angepasst werden, da kommt es auf die Geschwindigkeit des Systems an. Einfach mal durchtesten. Die Fehler werden euch sagen, ob ihr zu schnell die <strong>update.inf</strong> wieder austauscht oder eben zu langsam.</p>
]]></content:encoded>
			<wfw:commentRss>http://codingstube.de/2010/05/how-towindows-rdp-client-7-auf-windows-server-2003-x86-installieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Powershell]Dateisystemrechte analog bestehender Rechte hinzufügen</title>
		<link>http://codingstube.de/2010/04/powershelldateisystemrechte-analog-bestehender-rechte-hinzufugen/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=powershelldateisystemrechte-analog-bestehender-rechte-hinzufugen</link>
		<comments>http://codingstube.de/2010/04/powershelldateisystemrechte-analog-bestehender-rechte-hinzufugen/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 11:17:58 +0000</pubDate>
		<dc:creator>root</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://codingstube.de/2010/04/powershelldateisystemrechte-analog-bestehender-rechte-hinzufugen/</guid>
		<description><![CDATA[Man stelle sich vor: Ein Fileserver mit diversen Gruppenberechtigungen am Dateisystem soll durch neue Sicherheitsgruppen, analog der alten Gruppen, erweitert werden. Beispiel: Die Sicherheitsgruppe G_Test hat in dem Ordner Fileserver:DatenTemp Vollzugriff. Nun soll Gruppe N_Test dieselben Berechtigungen auf diesen Ordner erhalten. Und da kommt Powershell wie gerufen. Mit folgendem Skript wird abgefragt, ab welchem Ordner [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="ps" align="left" src="http://codingstube.de/wp-content/uploads/2010/04/ps-1.png" width="131" height="105" />Man stelle sich vor: Ein Fileserver mit diversen Gruppenberechtigungen am Dateisystem soll durch neue Sicherheitsgruppen, analog der alten Gruppen, erweitert werden.</p>
<p><strong>Beispiel:</strong></p>
<blockquote>
<p>Die Sicherheitsgruppe G_Test hat in dem Ordner <em>Fileserver:DatenTemp</em> Vollzugriff. Nun soll Gruppe N_Test dieselben Berechtigungen auf diesen Ordner erhalten.</p>
</blockquote>
<p>Und da kommt Powershell wie gerufen. Mit folgendem Skript wird abgefragt, ab welchem Ordner + (Unterordner) überprüft werden soll. Danach wird automatisch nach den <strong>angegebenen</strong> Gruppen gesucht und diese duch die neue Domäne ersetzt. Auch die Vererbung wird geprüft und ggf. übertragen. Es funktioniert nur, wenn die Gruppen gleich heißen, kann aber schnell abgeändert werden.</p>
<pre class="brush: powershell; title: ; notranslate">
#ChangeACL.ps1

#The possible values for Rights are
# ListDirectory, ReadData, WriteData
# CreateFiles, CreateDirectories, AppendData
# ReadExtendedAttributes, WriteExtendedAttributes, Traverse
# ExecuteFile, DeleteSubdirectoriesAndFiles, ReadAttributes
# WriteAttributes, Write, Delete
# ReadPermissions, Read, ReadAndExecute
# Modify, ChangePermissions, TakeOwnership
# Synchronize, FullControl

$StartingDir=Read-Host &quot;What directory do you want to start at?&quot;

foreach ($file in $(Get-ChildItem $StartingDir -recurse | where {$_.PsIsContainer})) {
  &quot; &quot;
  &quot;Objekt: &quot; + $file.FullName

  $name = Get-Acl $file.FullName | ForEach-Object { $_.Access  } | Group-Object IdentityReference | % {$_.Name}
  $rights = Get-Acl $file.FullName | % {$_.Access} | % {$_.FileSystemRights}
  $IsInherited = Get-Acl $file.FullName | % {$_.Access} | % {$_.InheritanceFlags}

  for($i=0;$i -lt $name.count ;$i++)
  {
        &quot;User: &quot; + $name[$i]
        &quot;Rights: &quot; + $rights[$i]

        #Insert your groups which will be replaced
        if($name[$i] -eq &quot;domain_ATest&quot; -or $name[$i] -eq &quot;domain_ATest2&quot;)
        {
                $name[$i] = $name[$i].Substring(13)
                $name[$i] = &quot;domain_B&quot;+$name[$i] #type in the new domainname
                $acl = Get-Acl $file.FullName

                $permission = $name[$i],$rights[$i],$IsInherited[$i],&quot;None&quot;,&quot;Allow&quot;
                $rule=new-object System.Security.AccessControl.FileSystemAccessRule $permission

                $acl.SetAccessRule($rule)
                $acl | Set-Acl $file.FullName

        }
  }

 }
</pre>
]]></content:encoded>
			<wfw:commentRss>http://codingstube.de/2010/04/powershelldateisystemrechte-analog-bestehender-rechte-hinzufugen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Exchange 2010]GUI Mailbox Übersicht</title>
		<link>http://codingstube.de/2010/04/exchange-2010gui-mailbox-ubersicht/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=exchange-2010gui-mailbox-ubersicht</link>
		<comments>http://codingstube.de/2010/04/exchange-2010gui-mailbox-ubersicht/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 09:55:08 +0000</pubDate>
		<dc:creator>MS</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://codingstube.de/?p=772</guid>
		<description><![CDATA[Vielen ist es bekannt, dass die Exchange Server Konsole nur wenig Informationen über Postfächer ausgibt, zumindest, wenn man mehrere Postfächer vergleichen möchte. Powershell kann da schon mehr Infos gleichzeitig ausgeben, wobei hier die Übersichtlichkeit leidet. Mit Hilfe des Exchange Dev Blogs von Glen Scales habe ich eine neue GUI erstellt, welche sehr viele Infos über [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><a class="thickbox" href="http://codingstube.de/wp-content/uploads/2010/04/Sumby-Full-2.png"><img alt="Sumby-Full" src="http://codingstube.de/wp-content/uploads/2010/04/sumby-full-2-small.png" width="450" height="337" /></a></p>
<p>Vielen ist es bekannt, dass die Exchange Server Konsole nur wenig Informationen über Postfächer ausgibt, zumindest, wenn man mehrere Postfächer vergleichen möchte. Powershell kann da schon mehr Infos gleichzeitig ausgeben, wobei hier die Übersichtlichkeit leidet.</p>
<p>Mit Hilfe des <a href="http://gsexdev.blogspot.com/">Exchange Dev Blogs</a> von Glen Scales habe ich eine neue GUI erstellt, welche sehr viele Infos über die Mailboxen auf einem oder mehreren Exchange-Servern darstellt. Z.B.: Kann nach Postfachgröße (Anzahl der Elemente oder der Speicherbelegung) sortiert werden. Eine Auflistung der Unterordner in einem Postfach ist auch möglich.</p>
<p>Einen Auszug von Filtern zeigt der folgende Screenshot:</p>
<p align="center"><img class="thickbox" alt="sumby-filters" src="http://codingstube.de/wp-content/uploads/2010/04/sumby-filters.png" width="138" height="173" /></p>
<p>Außerdem kann zwischen <em>verbundenen</em> und <em>nicht-verbundenen</em> Postfächern geschaltet werden:</p>
<p align="center"><img class="thickbox" alt="sumby-disconnected" src="http://codingstube.de/wp-content/uploads/2010/04/sumby-disconnected.png" width="450" height="143" /></p>
<p>Das Skript muss auf einem Exchange-Server ausgeführt werden. Getestet wurde es auf einem deutschen Exchange-Server 2010. Das Skript muss daher in diesen Ordner kopiert werden: <em>C:Program FilesMicrosoftExchange ServerV14Scripts</em></p>
<p>Außerdem muss der ausführende Account Zugriffsberechtigungen auf den restlichen Postfächern besitzen.</p>
<p>Das Skript ist <a href="http://codingstube.de/downloads/sumby.zip">hier</a> zum Download verfügbar.</p>
]]></content:encoded>
			<wfw:commentRss>http://codingstube.de/2010/04/exchange-2010gui-mailbox-ubersicht/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

