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
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?