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

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

Link zu diesem Kommentar

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.

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

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...