xola 10 Geschrieben 25. Juli 2011 Melden Teilen Geschrieben 25. Juli 2011 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 Zitieren Link zu diesem Kommentar
mamamia 13 Geschrieben 25. Juli 2011 Melden Teilen Geschrieben 25. Juli 2011 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. Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 25. Juli 2011 Melden Teilen Geschrieben 25. Juli 2011 Hallo, vielleicht hilft dir auch Quser weiter http://www.mcseboard.de/windows-forum-scripting-71/probleme-powershell-script-171900.html blub Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 25. Juli 2011 Melden Teilen Geschrieben 25. Juli 2011 [...] Das Semikolon kannst du weglassen, dass wird bei PS nicht zwingend (überhaupt nicht) benötigt. Doch. Wenn man alles in eine Zeile schreibt. Zitieren Link zu diesem Kommentar
mamamia 13 Geschrieben 26. Juli 2011 Melden Teilen Geschrieben 26. Juli 2011 Doch. Wenn man alles in eine Zeile schreibt. Naja, sowas macht ja keiner :D:D:D Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.