voor
<#
Scriptnaam: MonitorFreeMemory.ps1
Functie : Dit script monitort het vrije geheugen van de machine waarop het script uitgevoerd wordt.
De resultaten worden weggeschreven naar een resultatenfile als uit te voeren SQL query.
Auteur : Olaf Ritman
Versie : 1.0
Datum : 12 oktober 2022
Verwachte argumenten: aantal seconden (numeriek) en naam van de output file (tekst)
De opdrachten staan tussen commentaar blokken in het script, voorafgegaan door “OPDRACHT:”
#>
Clear-Host
<# OPDRACHT:
Zorg dat hieronder default waarden voor de variabelen $seconds en $ResultFile worden ingesteld
#>
$MachineName = hostname
$seconds = $null
$ResultFile = $null
If ($args[0] -Is [int]) {$seconds = $args[0]}
<# OPDRACHT:
Zorg dat ook gecontroleerd wordt of als tweede argument de naam van een resultfile wordt ingevoerd.
Zo ja, dan moet de default waarde van $ResultFile daarmee vervangen worden
#>
If (Test-Path -LiteralPath $ResultFile) {
Write-Host -ForegroundColor Red “WARNING: ” -NoNewline
Write-Host “$ResultFile already exists. What do you want to do?”
Write-Host “[1] Add the results to this file”
Write-Host “[2] Delete it and start with an empty one”
Write-Host “[9] Quit”
$answer = Read-Host -Prompt “Please make your choice”
<# OPDRACHT:
Zorg dat de gebruiker net zolang gevraagd wordt om 1 van bovenstaande opties (1,2,9) in te voeren
tot $answer 1 van deze waarden heeft. Je hebt hier maximaal 3 regels voor nodig.
#>
If ($answer -Eq ‘2’) {
Set-Content -path $ResultFile -value “DELETE FROM MemoryUsage WHERE ID > 0;”
Add-Content -path $ResultFile -value “INSERT INTO MemoryUsage (Hostname,FreeMemory,Date) VALUES”
}
<# OPDRACHT:
Zorg ervoor dat het programma stopt als het antwoord 9 is. Dit zou in 1 regel kunnen.
#>
}
Else {
Set-Content -path $ResultFile -value “DELETE FROM MemoryUsage WHERE ID > 0;”
Add-Content -path $ResultFile -value “INSERT INTO MemoryUsage (Hostname,FreeMemory,Date) VALUES”
}
$aantalSeconden = New-timespan -seconds $seconds
$startAt = Get-Date
$stopAt = (Get-Date) + $aantalSeconden
clear
$LineOut = “Checking free virtual memory on $MachineName for $seconds seconds”
Write-Host $LineOut
<# OPDRACHT:
Leg in 1 commentaarblok uit wat de volgende 4 regels doen
#>
$LengthLineOut = $LineOut.Length
For($i=1;$i -le $LengthLineOut;$i++){
Write-Host -NoNewline “=”
}
Write-Host “`r”
<# OPDRACHT
Zorg ervoor dat de volgende regels net zolang lopen tot de $stopAt voorbij is.
#>
$FreeMemory = Get-CIMInstance Win32_OperatingSystem | Select FreePhysicalMemory
ForEach ($entry in $FreeMemory){
$TimeStamp = Get-Date -Format “yyyyMMddHHmmss”
$MemValue = $entry.FreePhysicalMemory
$NewLine = “(‘$MachineName’,$MemValue,$TimeStamp),”
Add-Content -Path $ResultFile -Value $NewLine
$TimeStamp = Get-Date
Write-Host “Free memory at ${TimeStamp}:” $entry.FreePhysicalMemory
}
<# OPDRACHT
Zorg er voor dat de gebruiker iets bewegends op het scherm
te zien krijgt voordat de volgende check plaatsvindt.
#>
}
clear
Write-Host -NoNewline “Monitoring process is done. Results can be found in “
<# OPDRACHT
Voeg aan de volgende regel iets toe waardoor de kleur van het lettertype rood wordt
#>
Write-Host $pwd\$ResultFile
$answer = Read-Host -Prompt “`nDo you want to open it (y/n)?”;
While (($answer -ne “y”) -And ($answer -ne “n”)) {
$answer = Read-Host -Prompt “Please make your choice (y/n)”;
}
<# OPDRACHT
Vervang hieronder de puntjes (…) door een check: als het antwoord ‘y’ is moet de file geopend worden
#>
If (…) {Invoke-Item $ResultFile}
Else {Write-Host “Dan niet joh…”}
Write-Host “================================`nScript finished at”, (Get-Date), “`n” ;
Nieuw
Na (Juiste antwoorden)
<#
Scriptnaam: MonitorFreeMemory.ps1
Functie : Dit script monitort het vrije geheugen van de machine waarop het script uitgevoerd wordt.
De resultaten worden weggeschreven naar een resultatenfile als uit te voeren SQL query.
Auteur : Olaf Ritman
Versie : 1.0
Datum : 12 oktober 2022
Verwachte argumenten: aantal seconden (numeriek) en naam van de output file (tekst)
De opdrachten staan tussen commentaar blokken in het script, voorafgegaan door “OPDRACHT:”
#>
#clear
Clear-Host
<# OPDRACHT:
Zorg dat hieronder default waarden voor de variabelen $seconds en $ResultFile worden ingesteld
#>
$seconds = 60
$ResultFile = ‘C:\Temp\ExportResultFile.txt’
$MachineName = hostname
If ($args[0] -Is [int]) {$seconds = $args[0]}
If ($args[1] -ne $null) {$ResultFile = $args[1]}
<# OPDRACHT:
Zorg dat ook gecontroleerd wordt of als tweede argument de naam van een resultfile wordt ingevoerd.
Zo ja, dan moet de default waarde van $ResultFile daarmee vervangen worden
#>
If (-not ([string]::IsNullOrEmpty($args[1]))){$ResultFile = $args[1]}
If (Test-Path -LiteralPath $ResultFile) {
Write-Host -ForegroundColor Red “WARNING: ” -NoNewline
Write-Host “$ResultFile already exists. What do you want to do?”
Write-Host “[1] Add the results to this file”
Write-Host “[2] Delete it and start with an empty one”
Write-Host “[9] Quit”
do{
$answer = Read-Host -Prompt “Please make your choice”
}
while($answer -notin (1,2,9))
}
<# OPDRACHT:
Zorg dat de gebruiker net zolang gevraagd wordt om 1 van bovenstaande opties (1,2,9) in te voeren
tot $answer 1 van deze waarden heeft. Je hebt hier maximaal 3 regels voor nodig.
#>
If ($answer -Eq ‘2’) {
Set-Content -path $ResultFile -value “DELETE FROM MemoryUsage WHERE ID > 0;”
Add-Content -path $ResultFile -value “INSERT INTO MemoryUsage (Hostname,FreeMemory,Date) VALUES”
}
<# OPDRACHT:
Zorg ervoor dat het programma stopt als het antwoord 9 is. Dit zou in 1 regel kunnen.
#>
ElseIf ($answer -eq ‘9’){ exit }
Else {
Add-Content -path $ResultFile -value “`r”
Add-Content -path $ResultFile -value “DELETE FROM MemoryUsage WHERE ID > 0;”
Add-Content -path $ResultFile -value “INSERT INTO MemoryUsage (Hostname,FreeMemory,Date) VALUES”
}
$aantalSeconden = New-timespan -seconds $seconds
$startAt = Get-Date
$stopAt = (Get-Date) + $aantalSeconden
#clear
Clear-Host
$LineOut = “Checking free virtual memory on $MachineName for $seconds seconds”
Write-Host $LineOut
<# OPDRACHT:
Leg in 1 commentaarblok uit wat de volgende 4 regels doen
#>
$LengthLineOut = $LineOut.Length
For($i=1;$i -le $LengthLineOut;$i++){
Write-Host -NoNewline “=”
}
Write-Host “`r”
<#
Voor ieder character in de regel $LineOut wordt een = op het scherm gezet
#>
<# OPDRACHT
Zorg ervoor dat de volgende regels net zolang lopen tot de $stopAt voorbij is.
#>
while((Get-Date) -lt $stopAt){
$FreeMemory = Get-CIMInstance Win32_OperatingSystem | Select FreePhysicalMemory
ForEach ($entry in $FreeMemory){
$TimeStamp = Get-Date -Format “yyyyMMddHHmmss”
$MemValue = $entry.FreePhysicalMemory
$NewLine = “(‘$MachineName’,$MemValue,$TimeStamp),”
Add-Content -Path $ResultFile -Value $NewLine
$TimeStamp = Get-Date
Write-Host “Free memory at ${TimeStamp}:” $entry.FreePhysicalMemory
}
<# OPDRACHT
Zorg er voor dat de gebruiker iets bewegends op het scherm
te zien krijgt voordat de volgende check plaatsvindt.
#>
For($i=1;$i -le $seconds;$i++){
Write-Host -NoNewline “.”
Start-Sleep -Seconds 1
}
Write-Host “`r”
}
clear
Write-Host -NoNewline “Monitoring process is done. Results can be found in “
<# OPDRACHT
Voeg aan de volgende regel iets toe waardoor de kleur van het lettertype rood wordt
#>
Write-Host $pwd\$ResultFile -ForegroundColor Red
$answer = Read-Host -Prompt “`nDo you want to open it (y/n)?”;
While (($answer -ne “y”) -And ($answer -ne “n”)) {
$answer = Read-Host -Prompt “Please make your choice (y/n)”;
}
<# OPDRACHT
Vervang hieronder de puntjes (…) door een check: als het antwoord ‘y’ is moet de file geopend worden
#>
If ($answer -eq “y”) {Invoke-Item $ResultFile}
Else {Write-Host “Dan niet joh…”}
Write-Host “================================`nScript finished at”, (Get-Date), “`n” ;