Outlook verwendet für den Zugriff auf Outlook Anywhere (RPCoverHttp) immer die RPC Komponente des Betriebssystems.

Hier gibt es zwischen Windows XP und Vista/Windows 7 Unterschiede im Verhalten.

Ein Grund, warum Windows XP sich nicht verbinden kann, könnte auch an einer Veröffentlichungsregel im TMG liegen. In einer Konstellation, wenn mehrere CAS Server verwendet werden (NLB Verbund), dann werden diese als Web-Farm im TMG als Ziel eingetragen.

Hier gibt es einen Load Balancing Mechanismus, der entweder Cookie Based oder Source IP Based eingetragen wird.

- Cookie Based für genattete Umgebungen, d.h. am TMG kommen alle mit der gleichen IP an
- Source IP Based, d.h jeder Client kommt mit seiner IP an

Problem bei Cookie Based: Windows XP kann damit nicht umgehen. Das bedeutet, es geht für Windows XP nur mit Source IP.

Was aber passiert, wenn die externen Clients genattet sind und alle mit der gleichen IP ankommen? Das funktioniert grundsätzlich auch mit Source IP Routing, jedoch ist dann kein Load Balancing mehr gegeben. D.h. man MUSS NAT auf Source Transparent Routing umstellen.

Wenn es nicht daran lag, dann treffen vielleicht die vielen anderen Artikel, die bei google zu finden sind, zu.

 

 

Exchange Active Sync funktioniert nicht, wenn die Vererbung bei diesen Usern unterbrochen ist.
Inherit from parent aktivieren, dann geht es wieder….

der AdminSDHolder Background Prozess läuft alle 60 Minuten im Hintergrund und ändern die Berechtigungen auf dem/den Objekt/en

http://technet.microsoft.com/en-us/magazine/2009.09.sdadminholder.aspx

http://technet.microsoft.com/en-us/library/dd439375(EXCHG.80).aspx

Update: So können die Accounts ermittelt werden, welche unter Kontolle durch den AdminSDHolder fallen:

Get-ADUser -LDAPFilter “(objectcategory=person)(samaccountname=*)(admincount=1)”|ft

Das Attribut admincount auf 0 setzen und anschließend die Vererbung der Rechte aktivieren. Generell sollten Admin Accounts nicht Mailenabled sein. Dafür hat man doch seinen Standard Account!

 

Set-User -Identity kweku@fabrikam.com -LinkedMasterAccount $null

Nach der Migration wird ggf. das OLK Profil nicht zeitnah angepasst (neuer Server).
Das liegt am Cache des IS und Outlook (http://social.technet.microsoft.com/Forums/en-ZA/exchange2010/thread/cdb55dea-14dd-49b4-8ee3-1013f6355a47 )

Welcher Cache genau weiß ich nicht – geht aus dem Artikel nicht hervor.
Den IS neu starten ist keine Option.

Diese Anleitung half bei mir:

http://www.prevx.com/blog/140/Black-Screen-woes-could-affect-millions-on-Windows–Vista-and-XP.html

Das half bei mir:

1.) Die Treiber für die Grafikkarte aktualisieren unter C:\Program Files\Common Files\vmware\drivers\video (evtl. auch \wddm_video)
2.) Reboot
3.) Screen-Resulotion/Advanced Settings/Troubleshoot/ Beschleuniger auf FULL setzen

Nur mal so als Gedankenstütze: (http://social.technet.microsoft.com/wiki/contents/articles/exchange-server-and-update-rollups-builds-numbers.aspx)

 

GCM exsetup |%{$_.Fileversioninfo}

In Exchange 2010 gibt es nun die Möglichkeit, den Abwesenheitsassistenten (OOF Out of Office) zentral zu steuern. Das ist sehr hilfreich, wenn man sich nicht Vollzugriff auf das Benutzerpostfach aneigenen möchte – nur um den Abwesenheitsassistenten zu aktivieren.
Damit das auch durch den Helpdesk bedient werden kann, habe ich da mal eine GUI außen herum gebastelt….
Matthias

Aus der Exchange 2010 EMC kann auf ein Postach relativ einfach das Recht Full Access gesetzt werden (Manage Full Access Permissions). Durch verwenden der Konsole wird in diesem Postfach das Attribut 

msExchDelegateListLink

mit dem DistinguishedNamen des Berechtigen Users gefüllt. Damit wird dem User beim Starten seines Outlooks automatisch dieses Postfach hinzugemappt, auf dem er Vollzugriff hat.

Feine Sache - wenn man es möchte. Durch entfernen des DN in diesem Attribut kann man steuern, ob das Postfach automatisch gemappt werden soll.

Steve Goodman hat auch einen ausführlichen Artikel dazu geschrieben.

SnapShots belegen Platz. Damit eine Partition nicht volläuft, sollte mittels vssadmin.exe das SnapShot Volume richtig konfiguriert werden.
Dazu verwende ich den vssadmin.exe:

Mit dem Kommando

vssadmin Add ShadowStorage /For=C: /On=<Ziel-Partition> /MaxSize=2GB

setze ich die Größe, welche für Snapshots von Laufwerk C: verwendet werden sollen. Das schöne daran ist, dass ich mich nicht um alte Snapshots kümmern muss. Sollte der Platz im ShadowStorage nicht mehr ausreichen, dann wird automatisch der älteste Eintrag entfernt.

Nun zum eigentlichen SnapShot, der mittels NTDSUtil.exe erzeugt wird.

Mit diesem Kommand wird ein SnapShot vom  Active Directory erzeugt:

ntdsutil snapshot “activate instance ntds” create q q

erzeugen wir den SnapShot im angegebenen ShadowStorage Bereich.

Ich verwende dazu das “Directory Service Comparison Tool” von Frederik Lindström.

Voraussetzung: Ein SnapShot muss vorhanden sein. (Hier gehts zum SnapShot Thema)

Verwenden Sie Ntdsutil um einen SnapShot zu mounten:

Im Explorer taucht nun der SnapShot als Linked Volume auf:

Suchen Sie nun die Datei ntds.dit (<SnapShotVolume>\Windows\NTDS\ntds.dit)

Übernehmen Sie den Pfad incl. Dateiname um diese Active Directory Kopie zu mounten.

Verwenden Sie dsamain.exe um die Kopie zu mounten.

Der Befehl lautet :

Dsamain.exe /DBPath “<Pfad zur NTDS Kopie Datei>” /ldapPort 16000

Starten Sie nun eine MMC.EXE und fügen das SnapIn „Directory Service Comparison Tool“ hinzu.

Verbinden Sie sich mit dem aktuellen Domaincontroller und der Kopie, in dem Sie den Port 16000 verwenden, wie im dsamin Programm angegeben.

Die beiden Verzeichnisse werden nun miteinander verglichen und die Änderungen (Change, Add, Delete) werden angezeigt.

Durch markieren des entsprechenden Attributes können Sie den geänderten Wert durch die Information aus dem SnapShot wieder herstellen.

Wenn der Restore Vorgang beendet ist, beenden Sie die MMC Konsole.

Beenden Sie die gemountete Kopie des Active Directories (im dsamain) indem Sie STRG + C drücken.

Verwenden Sie das ntdsutil um den gemounteten SnapShop zu dismounten. Geben Sie dazu im ntdsutil folgendes ein:

  • „List mount“ um eine Liste der gemounteten SnapShots anzuzeigen
  • Unmount <Nr des SnapShots>

Das Attribut “BytesTransferredPerMinute” ist nur während eines Moves/Export gefüllt. Nach erfolgreichen Move/Export ist das Attribute wieder leer. Eine Statistic über die Performance der bereits verschobenen Mailboxen würde mich aber schon interessieren um daraus Rückschlüsse für weitere Move/Export-Requests ziehen zu können.

Ich habe mir dazu ein Script geschrieben, welches den Wert berechnet (Es kann natürlich beliebig erweitert werden):

Function Get-MailboxMoveStatistics {

$Requests = Get-MoveRequest|get-MoveRequestStatistics 
foreach($Request in $Requests ) {

$MBXSize  = $Request.BytesTransferred
$Duration = $Request.OverallDuration        
#-> Bei Werten kleiner 1 MB ist das Ergebnis immer 0. Deshalb neuer Ansatz
#     $MBAvg = $MBXSize.ToMB() / $Duration.TotalMinutes          
$MBAvg = ($MBXSize.ToBytes() / $Duration.TotalMinutes) / 1MB

New-Object PSObject -Property @{

Alias = $Request.Alias
MBXSize = $Request.BytesTransferred
OverallDuration = $Request.OverallDuration
“MBTransferredPerMinute” = “{0:n2}” -f $MBAvg   

         
}

}

}

Damit können die Größen der Datenbanken ermittelt werden. Wenn ein vordefiniertes Limit erreicht ist, dann wird ein Eventlog geschrieben, dass eine weitere Datenbank nötig ist.

Function Get-DatabaseStatistics { 
     $Databases = Get-MailboxDatabase -Status
     $Result = “”

     foreach($Database in $Databases) { 
         $DBSize = $Database.DatabaseSize 
         $MBCount = (Get-Mailbox -Database $Database.Name).Count 
         $MBAvg = $DBSize.ToBytes() / $MBCount            

 $Result += “Server`t`t`t: ” + $Database.Server.Name+[char]13+[char]10
 $Result += “Databasename`t`t: ” + $Database.Name+[char]13+[char]10
 $Result += “MailboxCount`t`t: ” + $MBCount +[char]13+[char]10
 $Result += “DatabaseSize (GB)`t`t: ” + “{0:n2}” -f ($DBSize.ToBytes() / 1GB)  +[char]13+[char]10
 $Result += “WhiteSpace (MB)`t`t: ” + “{0:n2}” -f ($Database.AvailableNewMailboxSpace.ToBytes() / 1MB)  +[char]13+[char]10
 $Result += “AverageMailboxSize (MB)`t: ” + “{0:n2}” -f ($MBAvg / 1MB)  +[char]13+[char]10
 $Result += “LastFullBackup`t`t: ” + $Database.LastFullBackup        +[char]13+[char]10

 $result +=  [char]13+[char]10

     } 
     return $Result

 } 
  
Function Get-DBSize($SITE){
 $Faktor        = 1GB      # Darstellung in MB oder GB….
 $MaxDBSize     = (100 * $Faktor)    # Maximale Größe der Datenbank in MB oder GB je nach Faktor, Default 100 xB….
 $HighWaterMark = ($MaxDBSize * 0.8 / $Faktor)   # Ab wann soll gewarnt werden (80% default)
 $DBCounter     = 0
 $lNewDB=$TRUE
 $Result = “”
 
 $MaxDBSize     = (100 * $Faktor)/$Faktor

 
 #Sucht nur ZDx Datenbanken
 ForEach($Database in Get-MailboxDatabase ZD* -Status|Sort-Object Name)
 { $DBCounter = $DBCounter +1
  $DBSize        = ($Database.DatabaseSize.ToBytes() / $Faktor)
  # Passt in diese Datenbank noch eine Mailbox rein?
  
  write-host $Database.Name
  write-host $DBSize
  write-host $HighWaterMark
  if ($DBSize -lt $HighWaterMark)
  {              
   $lNewDB = $False   
   # Wenn noch eine reinpasst, dann muss keine NewDB angelegt werden ($False)
   break     
   # Schleife kann nun schon beendet werden
  }
 }
 # das neue Postfach hat in keine DB reingepasst, also muss eine neue DB angelegt werden
 if ($lNewDB -eq $True) {
  $Help= “Alle {2} -Datenbanken sind zu mehr als {0} % belegt. Maximale Datenbankgröße {1:n2} MB. Neue {2} -Datenbank wird benötigt.” -f $HighWaterMark, $MaxDBSize, $Site
#write-host $Help
write-eventlog -logname Application -source “MSExchangeStatistic” -eventID 997 -entrytype Warning -message $help

 }
}
Function SendMail($MessageBody){

 $emailFrom = From@domain.de
 $emailTo = Empfaenger@domain.de
 $subject = “Database Statistics”
 $body = $MessageBody
 $smtpServer = “Mailserver.domain.de”
 $smtp = new-object Net.Mail.SmtpClient($smtpServer)
 $smtp.Send($emailFrom, $emailTo, $subject, $body)
}

########################################################################################################################

$result = Get-DatabaseStatistics
write-eventlog -logname Application -source “MSExchangeStatistic” -eventID 998 -entrytype Information -message $result
SendMail($result)

Get-DBSize(“ZD”)
Get-DBSize(“VB”)

 exit

$emailFrom = “user@yourdomain.com”
$emailTo = “user@yourdomain.com”
$subject = “your subject”
$body = “your body”
$smtpServer = “your smtp server”
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body)

Get-OrganizationConfig |fl *tips*
MailTipsExternalRecipientsTipsEnabled : False
MailTipsLargeAudienceThreshold        : 25
MailTipsMailboxSourcedTipsEnabled     : True
MailTipsGroupMetricsEnabled           : True
MailTipsAllTipsEnabled                : True

Um die GroupMetrics wird benötigt, um die Anzahl der Mitglieder in einer Mailgruppe zu ermitteln. Um keine Online-Abfrage der Gruppenmitglieder machen zu müssen, wird jeden Tag um xx:xx Uhr die Liste der Gruppenmitglieder neu generiert. Dazu muss der MBX-Server konfiguriert werden:

Set-MailboxServer EXCH2010-SRV1 -GroupMetricsGenerationEnabled:$true

Der Dienst “Microsoft Exchange Service Host” ist dafür verantwortlich. Er kopiert das Ergebnis auf den/die CAS Server in das Verzeichnis %ProgramFiles%\Miccrosoft\Exchange Server\V14\ClientAccess\GroupMetrics.

Wenn man einem User das Recht genommen hat, an einen Empfänger Mails zu senden, erscheint dies ebenfalls als MailTips Meldung.
(Set-Mailbox UaserA -RejectMessageFromSendersOrMembers UserB bedeutet, dass UserB keine Mails mehr an UserA senden darf.)

Zusätzlich kann man sich selbst auch Custom MailTips erstellen:

(mit Set-Mailbox und Set-DistributionGroup)

Set-Mailbox UserB –Mailtip “Sind Sie sicher, dass sie mir eine Mail senden müssen ? :-)

Für die 64 Bit Umgebung gibt es auch eine Additional AccountInfo Property Page:

http://www.activedir.org/ACCTINFO2_64BIT.zip

Hier können die Scripte heruntergeladen werden, die in der 2008er Umgebung fehlen.

http://www.microsoft.com/downloads/info.aspx?na=90&p=&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=38c1a89b-a6d2-4f2a-a944-9236999aee65&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fb%2f9%2f4%2fb9433bd1-f335-495b-95ff-3c49d2b782b6%2fGPMCSampleScripts.msi

Enable-ADOptionalFeature “Recycle Bin Feature” -Scope ForestorConfigurationset -Target <your dns domain name>

Wichtig: Das geht nur auf einem DC der Domain Naming Master ist. Auf allen anderen DCs kommt eine Fehlermeldung, “Enable-ADOptionalFeature : A referral was returned from the server”

Powershell aus dem Administrativen Menü starten, da dann die AD CMDLets geladen werden. (Sonst fehlt Enable-ADOptionalFeature)

Einen Linked Server hinzufügen: EXEC sp_addlinkedserver ‘ADSI’, ‘Active Directory Services 2.5′, ‘ADSDSOObject’, ‘adsdatasource’

Das SQL Statement sieht dann so aus:

SELECT [Name], SN [Last Name], ST State
FROM OPENQUERY( ADSI,

‘SELECT Name, SN, ST FROM ”LDAP://Domaincontroller/DC=YourDomain,DC=local”

WHERE objectCategory = ”Person” AND objectClass = ”user”’)

Nachdem ich nun Stunden damit verbracht habe, die sidHistory Filterung auszuschalten obwohl sie “angeblich” aus ist, bin ich nun auf die Lösung gestoßen:

bei den Parametern /enableSIDHistory und /quarantine gibt man üblicherweise NO an (weil ja alles in Englisch ist). Wenn es aber ein deutsches Betriebssystem ist, dann muss man hier aber NEIN angeben, dann klappt’s sofort.

Da kommt doch kein Mensch drauf….. :-(