$groupmembers = Get-ADGroupMember -Identity Groupname
$result=@()
Foreach ($member in $groupmembers){
$user = get-aduser $member.samaccountname -Properties *
$sam = $member.samaccountname
$email = $user.EmailAddress
$name = $user.DisplayName
$right = Get-MailboxFolderPermission $email“:\Kalender“ -User Default -ErrorAction SilentlyContinue | select AccessRights
if ($right -eq $null){$right = Get-MailboxFolderPermission $email“:\Calendar“ -User Default -ErrorAction SilentlyContinue | select AccessRights}
if ($right -eq $null){$right = „nix“}else{$right = $right.AccessRights[0]}
$exserver = $user.msExchHomeServerName
if ($exserver -eq $null){$exserver = „“}
$dings = new-Object PSObject -Property @{
user = $email
homeserver = $exserver
right = $right
sam = $sam
name = $name}
$result += $dings
}
$result | Out-GridView
Schlagwort-Archive: Exchange
Microsoft Exchange Server User Monitor
Enables system administrators to view and evaluate individual users‘ usage and experience with Microsoft Exchange Server.
via Download Microsoft Exchange Server User Monitor from Official Microsoft Download Center.
follow the message through Exchange logs
you have to enable connecotor logs with verbose log level!
- find session id on receive in
C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\FrontEnd\ProtocolLog\SmtpReceive
search recipient or sender….you will find also the message id!!! - show all lines of this session
@(Get-Content -Path „C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\FrontEnd\ProtocolLog\SmtpReceive\RECV20150429-1.LOG“) -match „08D24ED360CF3B98“ | Out-GridView
see connector id, etc. - find session id on send to hup
C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\FrontEnd\ProtocolLog\SmtpSend
search by message id, recipient or sender… - search session id in current log file of frontend send connectors
@(Get-Content -Path „C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\FrontEnd\ProtocolLog\SmtpSend\SEND20150429-1.LOG“) -match „08D24ED360CF3B98“ | Out-GridViewdo the same for following files
- C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\Hub\ProtocolLog\SmtpReceive\RECV20150429-1.LOG
- C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\Hub\ProtocolLog\SmtpSend\SEND20150429-1.LOG
- C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\Mailbox\ProtocolLog\SmtpReceive\Delivery\RECV20150429-1.LOG
set higher level of connector logs
connector logs have a rollover for log files, so if you set a high level for logging, you may have a fewer time range, but more Information
Get-ReceiveConnector | Set-ReceiveConnector -ProtocolLoggingLevel Verbose
Get-TransportService | Set-TransportService -IntraOrgConnectorProtocolLoggingLevel verbose
Get-MailboxTransportService | Set-MailboxTransportService -MailboxDeliveryConnectorProtocolLoggingLevel Verbose
for Exchange 2013
Einen Client-Request in Exchange 2013 verfolgen
um einen Client-Request am Exchange-Server zu verfolgen
- Welcher Server? wo kommt der request an?
https://exchangehostname/mapi/emsmdb
ping exchangehostname - HTTP-Log um die Request ID zu erlangen
C:\inetpub\logs\LogFiles\W3SVC1 (W3SVC1 ist bei Multi-Role-Server der CAS, W3SVC2 ist der MBX – sieht man auch an der ID in der IIS Administration) - Abhängig vom Client-Typ sucht man nach dem Request (um den Verbindungstyp bei Outlook festzustellen, in der Taskleiste im „Notification area“ mit aktiver STRG-Taste ein Rechtsklick auf das Outlook-Symbol und den „Verbindungsstatus…“ anzeigen – bei Protokoll findet man nun den Verbingunstyp)
für Outlook mit RPC/HTTP sucht man dann nach „/rpc“ oder auch bei ECP „/ViewUserMailboxDetails.aspx“ - muss in Folge im richtigen HTTP-Proxy-Verzeichnis gesucht werden
RCP via Outlook C:\Program Files\Microsoft\Exchange Server\V15\Logging\HttpProxy\RpcHttp
ECP via Browser: C:\Program Files\Microsoft\Exchange Server\V15\Logging\HttpProxy\Ecp
hier findet man dann mit obiger ID auf welchen Exchange-Server man weitergeleitet wurde bzw. auch die Mailbox-ID etc. - auf dem Exchange-Server muss dann im Backend gesucht werden
beginnend mit dem aktuellen IIS-Log: in C:\inetpub\logs\LogFiles\W3SVC2 nach obiger ID durchsuchen - in Folge die Exchange Backend Logs
- RCP via Outlook C:\Program Files\Microsoft\Exchange Server\V15\Logging\RpcHttp\W3SVC2 (W3SVC wieder abhängig von der ID im IIS)
- weiter im RCP Client Access-Log
C:\Program Files\Microsoft\Exchange Server\V15\Logging\RPC Client Access
hier finde ich ob der Logon funktioniert hat bzw. auch einen Access Denied oder ob der aktuelle User auch in der Rolle „Owner“ zugegriffen hat (=OwnerLogon) oder über eine Freigabe (=DelegateLogon)
- weiter im RCP Client Access-Log
- MAPI via Outlook C:\Program Files\Microsoft\Exchange Server\V15\Logging\MAPI Client Access
- ECP via Browser:
- unter C:\Program Files\Microsoft\Exchange Server\V15\Logging\ECP\Activity findet man ob man angekommen ist
- unter C:\Program Files\Microsoft\Exchange Server\V15\Logging\ECP\Server findet man was gemacht wurde
- RCP via Outlook C:\Program Files\Microsoft\Exchange Server\V15\Logging\RpcHttp\W3SVC2 (W3SVC wieder abhängig von der ID im IIS)
Disable-InMemoryTracing
use Disable-InMemoryTracing.ps1 to disable tracing of Exchange
other intersting scripts of exchange via Exchange 2013 Scripts on Server | DonnIgway.
Activate MAPI over HTTP for Exchange 2013
Get-MapiVirtualDirectory | Set-MapiVirtualDirectory -InternalUrl https://exchangehostname/mapi -ExternalUrl https://exchangehostname/mapi -IISAuthenticationMethods Negotiate,NTLM,Basic
Set-OrganizationConfig -MapiHttpEnabled $true
log rollover for Exchange 2013 server
use forfiles (or something like that) for log rollover of Exchange Server to free up disk space – implement it for following folders
C:\Program Files\Microsoft\Exchange Server\V15\Bin\Search\Ceres\Diagnostics\ETLTraces
C:\Program Files\Microsoft\Exchange Server\V15\Bin\Search\Ceres\Diagnostics\Logs
C:\Program Files\Microsoft\Exchange Server\V15\Logging
C:\Program Files\Microsoft\Exchange Server\V15\Logging\Diagnostics\PerformanceLogsToBeProcessed
C:\Program Files\Microsoft\Exchange Server\V15\Logging\Monitoring\Monitoring\MSExchangeHMWorker\ActiveMonitoringTraceLogs
C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data\Temp
C:\inetpub\logs
exp: forfiles /p C:\inetpub\logs /m *.log /s /d -10 /c „cmd /c DEL @path“
alternativ with Powershell:
Function Remove-ToolsLog($olderThenDays){
Set-ToolsLogAddLine -LogTXT „Remove old log files“ -Foregroundcolor „green“
$logPath = Split-Path $Script:LogFilePath -Parent
Get-ChildItem -path $logPath | Where-Object { !$_.PSIsContainer -and $_.Extension -eq „.log“ -and $_.CreationTime -lt (Get-Date).AddDays(–$olderThenDays) } | Remove-Item -Force
}
use log parsing for MS
use LogExpert or LogParser to analyse logs of Exchange or other Microsoft products
LogExpert
https://logexpert.codeplex.com/releases/view/610775
LogParser
http://www.microsoft.com/en-us/download/details.aspx?id=24659