<#
OPDRACHT:
Zorg dat hieronder default waarden voor de variabelen $seconds en $ResultFile worden ingesteld
>
$seconds = 60
$ResultFile = "C:"
$MachineName = hostname
Check and set values for seconds and ResultFile from command line arguments
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 ($args.Count -ge 2) {
$ResultFile = $args[1]
Check if the ResultFile already exists
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.
#>
do {
$answer = Read-Host "Voer 1, 2 of 9 in"
} until ($answer -eq '1' -or $answer -eq '2' -or $answer -eq '9')
# Process user choice
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.
#>
do {
$answer = Read-Host "Voer 1, 2 of 9 in"
} until ($answer -eq '1' -or $answer -eq '2' -or $answer -eq '9'; break)
} else {
Set-Content -path $ResultFile -value "DELETE FROM MemoryUsage WHERE ID > 0;"
Add-Content -path $ResultFile -value "INSERT INTO MemoryUsage (Hostname,FreeMemory,Date) VALUES"
}
}
<#
De volgende 4 regels dienen om een lijn van '=' tekens af te drukken op basis van de lengte van de variabele $LineOut:
$LengthLineOut = $LineOut.Length: Bereken de lengte van de string in $LineOut en wijs deze toe aan $LengthLineOut.
For($i=1;$i -le $LengthLineOut;$i++): Initialiseer een for-lus waarin $i wordt geïnitialiseerd op 1 en wordt verhoogd tot $LengthLineOut.
Deze lus wordt gebruikt om '=' tekens af te drukken op basis van de lengte van $LineOut.
Write-Host -NoNewline "=": Druk een '=' teken af zonder een nieuwe regel toe te voegen, herhaald voor elke iteratie van de for-lus.
Write-Host "`r": Voeg een nieuwe regel toe na het afdrukken van de '=' tekens om naar de volgende regel over te gaan.
>
<#
OPDRACHT:
Zorg ervoor dat de volgende regels net zolang lopen tot de $stopAt voorbij is.
# Laat een bewegend symbool zien voor visuele feedback
$spinners = "|", "/", "-", "\"
foreach ($spinner in $spinners) {
Write-Host -NoNewline $spinner
Start-Sleep -Milliseconds 100
Write-Host -NoNewline "`b" # Backspace om het symbool te wissen
}
}
} until ($MemValue -ge $stopAt)
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 ("Free memory at ${TimeStamp}:" $entry.FreePhysicalMemory) -ForegroundColor Red
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
# Laat een bewegend symbool zien voor visuele feedback
$spinners = "|", "/", "-", "\"
foreach ($spinner in $spinners) {
Write-Host -NoNewline $spinner
Start-Sleep -Milliseconds 100
Write-Host -NoNewline "`b" # Backspace om het symbool te wissen
}
}
} until ($MemValue -ge $stopAt)
Vervang de puntjes door een check
$openFile = Read-Host "Wil je het bestand openen? (y/n)"
if ($openFile -eq 'y') {
Start-Process $ResultFile
}
If (...) {Invoke-Item $ResultFile}
Else {Write-Host "Dan niet joh..."}
Write-Host "================================nScript finished at", (Get-Date), "n" ;
This script has been annotated with comments (in Dutch) to explain the purpose and functionality of each section.
clear
<#
OPDRACHT: Zorg dat hieronder default waarden voor de variabelen $seconds en $ResultFile worden ingesteld
>
$seconds = 60 $ResultFile = "C:"
$MachineName = hostname
Check and set values for seconds and ResultFile from command line arguments
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 ($args.Count -ge 2) { $ResultFile = $args[1]
Check if the ResultFile already exists
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"
} 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"
<# De volgende 4 regels dienen om een lijn van '=' tekens af te drukken op basis van de lengte van de variabele $LineOut:
>
<#
OPDRACHT: Zorg ervoor dat de volgende regels net zolang lopen tot de $stopAt voorbij is.
>
$stopAt = 100
do { $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 } } until ($MemValue -ge $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.
>
$stopAt = 100
do { $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
} until ($MemValue -ge $stopAt)
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 ("Free memory at ${TimeStamp}:" $entry.FreePhysicalMemory) -ForegroundColor Red
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
>
$stopAt = 100
do { $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
} until ($MemValue -ge $stopAt)
Vervang de puntjes door een check
$openFile = Read-Host "Wil je het bestand openen? (y/n)" if ($openFile -eq 'y') { Start-Process $ResultFile } If (...) {Invoke-Item $ResultFile} Else {Write-Host "Dan niet joh..."}
Write-Host "================================
nScript finished at", (Get-Date), "
n" ;