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-Key: 562350

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

Printed on: April 25, 2024 at 09:04 o'clock

Member: TK1987
Solution TK1987 Apr 01, 2020 at 12:14:13 (UTC)
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
Member: Dennis8799
Dennis8799 Apr 01, 2020 at 12:22:39 (UTC)
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 ?
Member: TK1987
TK1987 Apr 01, 2020 at 12:57:52 (UTC)
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?
Member: Dennis8799
Dennis8799 Apr 01, 2020 at 13:00:06 (UTC)
Goto Top
Sofern das möglich ist wären Gigabyte am besten, Megabyte sind auch okay
Member: TK1987
Solution TK1987 Apr 01, 2020 updated at 13:46:59 (UTC)
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
Member: Dennis8799
Dennis8799 Apr 01, 2020 at 14:09:01 (UTC)
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