Jump to content

PowerShell 1.0: Terminaluseranzahl


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Hallo,

 

ich habe folgendes kleines Script geschrieben, das unter Win2k3 Enterprise per Scheduled Task alle 10 Minuten läuft. Es überwacht die Terminaluseranzahl und den freien Festplattenplatz zur Zeit der Ausführung. Ich nutze das Modul "PSTerminalServices":

 

$error.clear();

Import-Module PSTerminalServices;
cd .....;

$date = Get-Date -uformat "%Y-%m-%d";
$date2 = Get-Date -uformat "%Y-%m";
$time = Get-Date -uformat "%H:%M:%S";
$count = (Get-TSSession | where { $_.UserName -notlike "XXX*" -and $_.UserName -notlike "YYY*" -and $_.State -eq "Active"}).count;
$freespace = Get-WmiObject Win32_logicaldisk | where {$_.DeviceId -eq "C:"};

"$date $time`t$count" | Add-Content "usercount_$date2.txt"
"$date $time`t" + ($freespace["FreeSpace"]/1024/1024).toString().Replace(".",",") | Add-Content "freespace_$date2.txt"

if($error.count -gt 0){ "$date $time`r`n$ERROR`r`n`r`n" | Add-Content "error.txt"; }

 

 

Das Script funktioniert eigentlich tadellos. Aber ab und zu bekomme ich ein paar Lücken in der usercount-Datei:

 

2011-07-19 11:23:04 51

2011-07-19 11:33:03 52

2011-07-19 11:43:10

2011-07-19 11:53:03 52

2011-07-19 12:03:03 51

 

Zu diesem Zeitpunkt kann die Userzahl aber definitiv nicht 0 gewesen sein.

 

Eigentlich hatte ich gehofft, dass ein Fehler ausgespuckt wurde, aber es gibt keine error-Datei.

 

Diese Lücken waren dieses Wochenende sehr häufig, und meistens hintereinander über mehrere Stunden hinweg.

 

Leider erschließt sich mir nicht, warum das manchmal so ist, und manchmal nicht.

Das Script läuft mit einem separatem Account.

Könnt ihr damit was anfangen?

 

Freundliche Grüße

Geschrieben

So etwas in der Art habe ich auch laufen, aber ein bisschen anders.

 

So wie ich das hier sehe, führst du das Script lokal auf deinen Maschinen aus, oder startest du das zentral von einer Instanz und sammelst dir die Werte zusammen?

 

Was ich mitbekommen habe bei Get-TSSession ist, dass diese manchmal einen NULL wert zurück gibt, wenn der Server gut am schaffen ist.

 

Zudem würde ich dir noch folgendes Raten:

Setze in der where-Klausel die Bedingungen in Klammern:

$count = (Get-TSSession | where { ($_.UserName -notlike "XXX*") -and ($_.UserName -notlike "YYY*") -and ($_.State -eq "Active")}).count;

Dient zur besseren Übersicht und du kannst sicher gehen, dass auch alles so ausgeführt wird, wie du das willst.

 

Was das bedeutet, verstehe ich nicht:

($freespace["FreeSpace"]/1024/1024).toString().Replace(".",",")

Wenn du den Freespace lesbar formatieren willst, dann so:

"{0:n} GB" -f ($freespace.FreeSpace/1024/1024/1024)

 

Das Semikolon kannst du weglassen, dass wird bei PS nicht zwingend (überhaupt nicht) benötigt.

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...