Auflisten aller aktiven Sitzungen in Exchange 2010

Im Rahmen einer Migration von Microsoft Exchange 2010 nach Microsoft Exchange 2013, ist es in vielen Fällen hilfreich zu wissen, wie viele Sitzungen auf dem Microsoft Exchange 2010 Server offen sind. Des weiteren kann es nützlich sein, wenn Sie eine ungefähre Vorstellung über die Lastverteilung erhalten möchten, oder wenn Sie einen Drain-Stop eines, bei mehreren CAS Servern, CAS-Servers  zu Wartungszwecken vornehmen. 

Es ist immer gut zu wissen, wie viele Benutzer durch die Wartungsmassnahme eines Server betroffen sein könnten. 


Um die Sitzungen auszulesen nutze ich die Performance Counter in Exchange 2010 und 2013.

Dazu hab ich ein kleines Powershell Script geschrieben, was die Performance Counter anspricht und eine einfache Darstellung der offenen Sitzungen zeigt.

 

function List-CASActiveUsers

{

[CmdletBinding()]

param (

[Parameter(Position = 0, ParameterSetName = "Value", Mandatory = $true)]

[String[]]$ComputerName,

[Parameter(Position = 0, ParameterSetName = "Pipeline", ValueFromPipelineByPropertyName = $true, Mandatory = $true)]

[String]$Name

)

process

{

switch ($PsCmdlet.ParameterSetName)

{

"Value" { $servers = $ComputerName }

"Pipeline" { $servers = $Name }

}

$servers | %{

$RPC = Get-Counter "\MSExchange RpcClientAccess\User Count" -ComputerName $_

$OWA = Get-Counter "\MSExchange OWA\Current Unique Users" -ComputerName $_

New-Object PSObject -Property @{

Server = $_

"RPC Client Access" = $RPC.CounterSamples[0].CookedValue

"Outlook Web App" = $OWA.CounterSamples[0].CookedValue

}

}

}

}

 

Diesen Code speichert Ihr in einer PS1 Datei ab und fügt diesen Code dann als Funktion in die aktive Powershell Session hinzu. Das habt Ihr zwei Möglichkeiten:

 

Möglichkeit 1

In der Powershell gebt Ihr erst ein Punkt, dann ein Leerschritt und dann den Pfad zur Datei an. So würde das dann aussehen:

 

PS C:\> . C:\Script\List-CASActiveUsers 

 

 Wichtig: Nach dem Punkt unbedingt ein Leerzeichen einfügen, sonst funzt das nicht.

 

Möglichkeit 2

Eine andere praktische Methode für das Hinzufügen von Funktionen in die Powershelll-Sitzung ist es, ein Powershell Profil zu verwenden. Powershell-Profile sind eigentlich ps1-Skripte, die ausgeführt werden, wenn du die Powershell Sitzung startest . Die Erstellung eines Profiles macht Ihr so:

 

PS C:\> New-Item -ItemType File -Path $profile -Force

 

 Sobald Ihr das gemacht habt, könnt Ihr das Script schon verwenden. Das Script hat einen Parameter "-Computername", damit könnt Ihr dann einen oder mehrere Exchange Server abfragen.

Beispiel:

 

 List-CASActiveUsers -ComputerName Server1,Server2

 

Das Script ist mit einer Pipline versehen, womit es Euch ermöglicht wird auch andere Befehle in Script hinein zu pipen.

Beispiel:

 

List-ClientAccessServer | Get-CASActiveUsers


Wenn Ihr den Befehl absetzt, habt bitte einen Augenblick Geduld, denn das Abfragen dauert ein wenig.


Ansonsten viel Spass.

Kommentar schreiben

Kommentare: 1
  • #1

    DT (Freitag, 03 April 2020 10:15)

    Moin,
    Danke für den Blogpost, ich suche neben den aktiven Usern auch nach einer Möglichkeit getrennte Sitzungen in OWA/Outlook zu erfassen. Hast du da vll. eine Lösung?