Difference between revisions of "Scriptprogrammering Februar 2017"

From Teknologisk videncenter
Jump to: navigation, search
(Første sæt af opgaver)
(Replaced content with "Denne side er tom..")
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
=Tidsplan=
+
Denne side er tom..
{|border=1 ;style="margin: 0 auto; text-align: center;cellpadding="5" cellspacing="0"
 
|+ Tidsplan
 
|- bgcolor=lightgrey
 
! Dag !! emne
 
|-
 
|Mandag || Intro til PowerShell
 
|-
 
|Tirsdag || Introduktion til Scriptprogrammering
 
|-
 
|Onsdag || Automatisering af opgaver
 
|-
 
|Torsdag || praktisk projekt
 
|-
 
|Fredag || Multiple-choice test og evaluering
 
 
 
|}
 
 
 
=Generelt=
 
 
 
Underviser:
 
Mads Kristian Nielsen
 
 
 
E-mail:
 
MaKn@mercantec.dk
 
 
 
=Mandag=
 
 
 
For at finde hjælp i powershell, skriv da:
 
<source lang="VB">
 
Get-Help searchForThisWord
 
</source>
 
 
 
 
 
==Opgaver:==
 
 
 
'''1. Hvordan søger vi efter hjælp i powershell?'''
 
 
 
''Resultat:'' Get-Help
 
 
 
'''2. Hvordan udskriver man alt hvad der er i den mappe som brugeren befinder sig?'''
 
 
 
''Resultat:'' dir eller ls
 
 
 
'''3. Hvordan skifter man den sti som brugeren befinder sig i?'''
 
 
 
''Resultat:'' cd C:\users\MyUser\Desktop\
 
 
 
'''4. Hvordan kopieres en fil?'''
 
 
 
''Resultat:'' Copy-Item C:\Users\MaKN\Desktop\ipconfig.txt C:\Users\MaKN\
 
 
 
'''5. Hvordan slettes en fil?'''
 
 
 
''Resultat:'' Remove-Item C:\Users\MaKN\Desktop\ipconfig.txt
 
 
 
'''6. Hvordan opretter vi en textfil?'''
 
 
 
''Resultat:'' "Dette er tekst" > textDoc.txt
 
 
 
'''7. Hvordan tilføjer vi tekst til filen uden at slette indholdet?'''
 
 
 
''Resultat:'' Add-Content C:\Users\MaKN\Desktop\myTextDocument.txt "Hej!"
 
 
 
'''8. Hvad er et alias?'''
 
 
 
''Resultat:'' En genvej til en kommando
 
 
 
'''9. Hvordan oprettes et alias?'''
 
 
 
''Resultat:'' new-alias append add-content
 
 
 
'''10. Hvordan startes lommeregneren fra powershell'''
 
 
 
''Resultat:'' calc.exe
 
 
 
'''11. Hvordan ses en liste over kørende processer på computeren?'''
 
 
 
''Resultat:'' Get-Process
 
 
 
'''12. Hvordan lukkes lommeregneren fra powershell?'''
 
 
 
''Resultat:'' Stop-process [id]
 
 
 
'''13. Hvordan tilgås registreringsdatabasen i powershell? (hint hkcu)'''
 
 
 
''Resultat:'' Get-ChildItem hkcu:\
 
 
 
'''14. Opret en ny nøgle i registreringsdatabasen under SOFTWARE med navnet test'''
 
 
 
''Resultat:'' New-Item hkcu:\SOFTWARE\test
 
 
 
'''15. Slet nu test fra SOFTWARE'''
 
 
 
''Resultat:'' Remove-Item hkcu:\SOFTWARE\test
 
 
 
==Scripting==
 
 
 
'''For at oprette en variabel skrives:'''
 
<source lang="VB">
 
$minVariabel = "hej"
 
</source>
 
 
 
'''For at skrive til brugeren:'''
 
<source lang="VB">
 
Write-host "Hej bruger."
 
</source>
 
 
 
'''For at indlæse indtastet tekst fra brugeren skrives:'''
 
<source lang="VB">
 
$brugerinput = read-Host
 
</source>
 
 
 
 
 
==Scripting opgaver==
 
 
 
'''Opgave 1:''' Lav et script hvor brugeren indtaster et stykke tekst, som så bliver gemt på skrivebordet som UserInput.txt
 
 
 
''Løsning:''
 
<source lang="VB">
 
Write-Host "Indtast et stykke tekst:"
 
$UserInput = Read-Host
 
 
 
$UserInput > C:\Users\MaKN\Desktop\UserInput.txt
 
Write-Host "Dit input blev gemt på skrivebordet."
 
</source>
 
 
 
'''Opgave 2:''' Lav et script der indlæser hvad brugeren skrev i tekstfilen i en variabel.
 
 
 
''løsning:''
 
<source lang="VB">
 
$ReadFile = Get-Content C:\Users\MaKN\Desktop\UserInput.txt
 
Write-Host "The input was:" $ReadFile
 
</source>
 
 
 
'''opgave 3:''' Lav et script der kan pinge en indtastet IP. Scriptet skal så gemme resultatet i en textfil på skrivebordet.
 
 
 
''løsning:''
 
<source lang="VB">
 
Write-Host "Type an IP to ping"
 
$ip = Read-Host
 
 
 
ping $ip > C:\Users\MaKN\Desktop\ipResult.txt
 
</source>
 
 
 
'''Opgave 4:''' Lav et script hvor brugeren indtaster 2 tal, som så bliver lagt sammen (som en lommeregner)
 
 
 
''løsning:''
 
<source lang="VB">
 
Write-Host "Type first number"
 
[int]$num1 = Read-Host
 
 
 
Write-Host "Type second number"
 
[int]$num2 = Read-Host
 
 
 
Write-Host
 
"The result is:"
 
$num1 + $num2
 
</source>
 
 
 
'''Opgave 5:''' Lav et script hvor brugeren kan indtaste et navn på en process som så skal lukkes. (eksempelvis lommeregneren).
 
 
 
''løsning:''
 
<source lang="VB">
 
Write-Host "Type the name of a process that you want to kill:"
 
$killThis =  Read-Host
 
 
 
$processes = Get-Process $killThis
 
 
 
Stop-Process $processes
 
</source>
 
 
 
'''Opgave 6:''' Lav et script hvor brugeren indtaster sin højde og vægt, og scriptet udregner brugerens BMI. ((kg) / [Højde (m)]2)
 
 
 
''Løsning:''
 
<source lang="VB">
 
Write-Host "What is your weight in kilo's?"
 
[double]$kg = Read-Host
 
 
 
Write-Host "What is your height in meters?"
 
[double]$height = Read-Host
 
 
 
Write-Host "Your BMi is:"
 
 
 
$kg / ($height * $height)
 
</source>
 
 
 
==Link til læsestof==
 
 
 
https://blog.udemy.com/powershell-tutorial/ - Læs fra "Using the Console" og frem.
 
 
 
 
 
=Tirsdag=
 
 
 
==Eksempler på kode==
 
 
 
'''Eksempel på if-statement:'''
 
 
 
<source lang="VB">
 
Write-Host "Type your name:"
 
 
 
$userInput = Read-Host
 
 
 
if($userInput -eq "Mads")
 
{
 
    Write-Host "Welcome superUser"
 
}
 
elseif($userInput -eq "Henrik")
 
{
 
    Write-Host "Welcome guest."
 
}
 
elseif($userInput -eq "Anders")
 
{
 
    Write-Host "Welcome guest."
 
}
 
else
 
{
 
    Write-Host "Bad input or wrong userName."
 
}
 
</source>
 
 
 
'''Eksempel på if-statement med 2 tjek:'''
 
 
 
<source lang="VB">
 
Write-Host "Please log in"
 
$username = Read-Host
 
$password = Read-Host
 
 
 
if(($username -eq "Mads") -and ($password -eq "Password123"))
 
{
 
Write-Host "You logged in as Mads"
 
}
 
</source>
 
 
 
'''Eksempel på et array'''
 
<source lang="VB">
 
$heroArray = "Batand", "Superand", "Spiderand"
 
 
 
$heroArray[0] #Udskriver den første and i arrayet (Batand)
 
</source>
 
 
 
==Opgaver==
 
 
 
'''1. Lav en simpel lommeregner, hvor brueren kan taste "1" for at lægge to tal sammen, taste "2" for at trække dem fra hinanden, 3 for at multiplicere, 4 for at dividere.'''
 
 
 
''Løsning:''
 
<source lang="VB">
 
cls
 
Write-Host "Type 1, to add two numbers."
 
Write-Host "Type 2, to subtract two numbers."
 
Write-Host "Type 3, to multiply two numbers."
 
Write-Host "Type 4, to divide two numbers."
 
 
 
$userChoice = Read-Host
 
 
 
Write-Host "Type the first number"
 
[int]$num1 = Read-Host
 
 
 
Write-Host "Type the second number"
 
[int]$num2 = Read-Host
 
Write-Host "The result was:"
 
 
 
if($userChoice -eq "1")
 
{
 
    $num1 + $num2
 
}
 
elseif ($userChoice -eq "2")
 
{
 
    $num1 - $num2
 
}
 
elseif ($userChoice -eq "3")
 
{
 
    $num1 * $num2
 
}
 
elseif ($userChoice -eq "4")
 
{
 
    $num1 / $num2
 
}
 
else
 
{
 
    Write-Host "Didn't understand your input, please try again."
 
}
 
</source>
 
 
 
 
 
'''2. Lav et script, hvor brugeren skal indtaste det år han/hun er født.
 
Hvis brugeren er over 21, modtager han en tekstbesked på skærmen hvor der står: "Du har adgang til mercantecs hemmelige stripclub".
 
Er brugeren ikke over 21, modtager han beskeden "Du er for ung til at blive medlem af mercantecs hemmeligheder"'''
 
 
 
''Løsning:''
 
<source lang="VB">
 
cls
 
 
 
Write-Host "Intast dit fødselsår"
 
$userBirthYear = Read-Host
 
 
 
[int]$currentYear = Get-Date -Format "yyyy"
 
 
 
if(($currentYear - 21) -gt $userBirthYear)
 
{
 
    Write-Host "Velkommen ind"
 
}
 
else
 
{
 
    Write-Host "Du er ikke gammel nok."
 
}
 
</source>
 
 
 
'''3. Lav et script, hvor brugeren kan taste "1" for at få vist computerens mest almindelige ip-konfigurationerne på skærmen.
 
Brugeren kan også taste 2 i stedet, for at få vise alle ip-konfigurationerne på skærmen.
 
Eller brugeren kan taste 3 for at få gemt en tekstfil på skrivebordet med alle ip-konfigurationerne.'''
 
 
 
 
 
'''Opgave 4:'''
 
 
 
'''Færdiggør dette program, så en tilfældig værdi bliver genereret, og man kan vinde spillet:'''
 
<source lang="VB">
 
$x = 5
 
$answer = 42
 
while ($x -gt 0)
 
{
 
    Write-Host "Gæt et tal mellem 0..100"
 
    [int]$guess = Read-Host
 
    if($guess -gt $answer)
 
    {
 
        Write-Host "The number was too large"
 
    }
 
 
 
    $x--
 
}
 
</source>
 
 
 
==Link til læsestof:==
 
http://www.jonathanmedd.net/2015/01/how-to-make-use-of-functions-in-powershell.html - læs det hele
 
 
 
=Onsdag=
 
 
 
I dag skal vi løse opgaver, hvor vi skal bruge vores viden fra mandag og tirsdag.
 
I er velkommende til at søge efter løsninger på nettet, eller spørge hinanden.
 
 
 
Vi skal mødes klokken 12 for at holde et status møde.
 
 
 
==Opgaver==
 
 
 
===Første sæt af opgaver===
 
 
 
'''Opgave 1:'''
 
Tænd for computerens højtalere, og kør der efter disse tre kommandoer i powershell:
 
<source lang="vb">
 
[Reflection.Assembly]::LoadWithPartialName('System.Speech')
 
$speaker = New-Object System.Speech.Synthesis.SpeechSynthesizer
 
$speaker.Speak(" naa-naa naa-naa naa-naa naa-naa Batman!")
 
</source>
 
 
 
Er det muligt at få oplæse klokkes læst op hvert minut? (eller hver time)
 
Hvad kunne ellers være interresandt at få læst op? Prøv at få oplæseren til at sige noget nyttigt igennem jeres script.
 
 
 
''vejledning:''
 
Du skal benytte et loop der udskriver tiden.
 
Benyt eventuelt: start-sleep 60, for at pause scriptet i 60 sekunder.
 
 
 
 
 
'''Opgave 2:'''
 
Lav en funktion, der tjekker om lommeregneren er åbnet på jeres computer.
 
Hvis ja, luk da lommeregneren.
 
Hvis nej, start da lommeregneren.
 
 
 
''vejledning:''
 
Gem alle åbne lommeregner processer i en variabel.
 
benyt eksempelvis en try-catch til at finde ud af om der var et resultat.
 
 
 
 
 
'''Opgave 3:'''
 
Lav et script der kopiere alle filerne i en mappe på jeres harddisk, til en backup-mappe i opretter på jeres skrivebord.
 
(i bestemmer selv hvilken mappe der skal kopieres fra, og hvilken mappe der skal kopieres til)
 
 
 
 
 
'''Opgave 4:'''
 
Lav et script, der tjekker om der er en forbindelse til en indtastet ip addresse. Scriptet skal tjekke om der er forbindelse til ip-adressen hvert 30 sekund.
 
Hvis der ikke er forbindelse, skal der skrives en fejlbesked på skærmen.
 
 
 
 
 
'''Opgave 5:'''
 
Kombiner alle opgaverne i ét script, der skal forestille at kører når brugeren ikke er ved maskinen.
 
 
 
 
 
'''Opgave 6:'''
 
Hvordan ser man de services der kører på maskinen? (ikke processer, men tjenester)
 
Lav et script der tjekker om en service er stoppet. Hvis ja, genstart da servicen. (Du bestemmer selv hvilken process der startes. Brug eventuelt windows update)
 
 
 
 
 
'''Opgave 7:'''
 
Lav et script, hvor brugeren har mulighed for at indtaste et tidspunkt, hvor computeren skal genstarte.
 
Brugeren skal også have mulighed for at specificere mere end ét tidspunkt på dagen, hvor computeren skal genstartes (eksempelvis klokken 12:00, 18:00, 24:00)
 
 
 
 
 
'''Opgave 8:'''
 
Lav et "er-det-fredag" script, der tjekker om det er fredag. Hvis ja, skriv da "Ja" til brugeren, hvis nej, skriv da "Nej" til brugeren.
 
 
 
 
 
'''Opgave 9:'''
 
Lav et script der tjekker hjemmesiden "er det fredag", og læser indeholdet på siden, hvis der står Nej, skrives "Nej" i konsollen, er svaret Ja skrives der "ja" i konsollen.
 
Hint: Du skal tjekke sidens HTML. Brug eventuelt https://superwidgets.wordpress.com/tag/read-html-via-powershell-powershell/
 
 
 
 
 
==Læsestof==
 
http://searchwindowsserver.techtarget.com/tip/Top-25-Windows-PowerShell-commands-for-administrators - Læs det hele
 

Latest revision as of 00:27, 4 May 2017

Denne side er tom..