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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 562350
Url: https://administrator.de/contentid/562350
Ausgedruckt am: 25.11.2024 um 02:11 Uhr
6 Kommentare
Neuester Kommentar
Moin,
Code bitte zukünftig immer in Code-Tags posten.
Falls die Datei einfach immer fortgeschrieben werden soll, brauchst du nur die Zeile
in
abändern.
Alternativ lann man Natürlich auch ein Datum an den Dateinamen hängen, sodass immer neue Logs erstellt werden.
Gruß Thomas
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'
Out-File -Append 'C:\Users\FABIAN\Desktop\log.txt'
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
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.Jetzt hab ich aber gerade bemerkt, dass Firefox 230GB Ram verwendet, was nicht sein kann.
Welche Einheit hättest du denn überhaupt gerne?
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"
}
Gruß Thomas