dennis8799
Goto Top

Windows PowerShell Out-File

Hey Leute,

Mein Vorhaben ist es, die Arbeitsspeicher Auslastung zu überwachen wegen eines Geschäftsprozesses.
Dazu brauche ich die Log File mit den richtigen Namen der Prozesse und der Auslastung dazu.
Am besten in einer LogFile

Ich habe hier auch einen passenden Code.


$i=0
while($true) {

$ProcArray = @()
$Processes = get-process | Group-Object -Property ProcessName
foreach($Process in $Processes)
{
$prop = @(
@{n='Count';e={$Process.Count}}
@{n='Name';e={$Process.Name}}
@{n='Memory';e={($Process.Group|Measure WorkingSet -Sum).Sum}}
)
$ProcArray += "" | select $prop
Write-Output "$prop"
}
$ProcArray | sort -Descending Memory | select Count,Name,@{n='Memory usage(Total)';e={"$(($_.Memory).ToString('N0'))Kb"}} |

Out-File 'C:\Users\FABIAN\Desktop\log.txt'

$i++
write-host $i

Start-Sleep -s 15

if ($i -ge 10) {break}
}


Das Problem ist jetzt, dass die LogFile richtig angelegt wird, jedesmal wenn es erneut durchläft, wird diese File jedoch überschrieben.

Kennt jemand eine Möglichkeit um das zu verhindern oder eine andere Möglichkeit der Dokumentation ?

Schön wäre es natürlich wenn die Datei einfach weitergeschrieben wird, es passt aber auch wenn jedesmal eine neue LogFile angelegt wird.

Danke euch.

Liebe Grüße
Dennis

Content-ID: 562350

Url: https://administrator.de/contentid/562350

Ausgedruckt am: 25.11.2024 um 02:11 Uhr

TK1987
Lösung TK1987 01.04.2020 um 14:14:13 Uhr
Goto Top
Moin,

Code bitte zukünftig immer in Code-Tags posten.

Kennt jemand eine Möglichkeit um das zu verhindern oder eine andere Möglichkeit der Dokumentation ?
Was genau willst du denn, dass es sonst tut?
Falls die Datei einfach immer fortgeschrieben werden soll, brauchst du nur die Zeile
Out-File 'C:\Users\FABIAN\Desktop\log.txt'  
in
Out-File -Append 'C:\Users\FABIAN\Desktop\log.txt'  
abändern.

Alternativ lann man Natürlich auch ein Datum an den Dateinamen hängen, sodass immer neue Logs erstellt werden.
Out-File "C:\Users\FABIAN\Desktop\log_$((get-date).ToString('yyyy-MM-dd')).txt"  

Gruß Thomas
Dennis8799
Dennis8799 01.04.2020 um 14:22:39 Uhr
Goto Top
Hey, danke für den Hinweis

mir hat der "Append" Befehl gefehlt.
So würde die LogFile passen.
Jetzt hab ich aber gerade bemerkt, dass Firefox 230GB Ram verwendet, was nicht sein kann.
Irgendwo muss noch ein Fehler sein.

Ich möchte in diesem moment, wo der Skript ausgeführt wird, den Arbeitsspeicher der von den einzelnen Prozessen verwendet wird,
in der LogFile speichern um das ganze zu dokumentieren, bzw. um einen Prozess zu überwachen.

Hast du / jemand eine Idee ?
TK1987
TK1987 01.04.2020 um 14:57:52 Uhr
Goto Top
Zitat von @Dennis8799:
Jetzt hab ich aber gerade bemerkt, dass Firefox 230GB Ram verwendet, was nicht sein kann.
Keine Ahnung wo du das Skript her hast - aber das, was da ausgegeben wird sind auch keine Kilobyte, sondern Byte.
Welche Einheit hättest du denn überhaupt gerne?
Dennis8799
Dennis8799 01.04.2020 um 15:00:06 Uhr
Goto Top
Sofern das möglich ist wären Gigabyte am besten, Megabyte sind auch okay
TK1987
Lösung TK1987 01.04.2020 aktualisiert um 15:46:59 Uhr
Goto Top
1..10 | % {

	$Processes = get-process | Group-Object -Property ProcessName | % {
		New-Object PSObject -property @{
			Count=$_.Count
			Name=$_.Name
			Memory=($_.Group|Measure WorkingSet -Sum).Sum
			}
		} | sort -Descending Memory | Select Count,Name,@{n='Memory';e={($_.Memory/1000000000).ToString('0.00 GB')}}  
	
	"Durchlauf $_ - $((get-date).ToString('dd.MM.yyyy HH:mm:ss'))" | Out-File -Append "$Home\Desktop\Log.txt"  
	$Processes | Out-File -Append "$Home\Desktop\Log.txt"  
	}
Sind echte GB. Wenn du lieber das hättest, was Windows fälschlicherweise als Gigabyte anzeigt (nämlich Gibibyte bzw. GiB), musst du das "/1000000000" durch "/1GB" ersetzen.

Gruß Thomas
Dennis8799
Dennis8799 01.04.2020 um 16:09:01 Uhr
Goto Top
Super, funktioniert Klasse
Danke dir

Weißt du zufällig auch wie man noch die CPU auslastung in das Script (Log) miteinbinden kann.
Wenn es möglich wäre auch die Datenträgerauslastung, diese ist aber nicht so wichtig.
CPU wäre super.

Gruß Dennis