340 likes | 397 Views
CN1266 Network Scripting V1.2. Kemtis Kunanuraksapong MSIS with Distinction MCTS, MCDST, MCP, A+. Agenda. Chapter 4: Shelling Out Commands and Scripts Chapter 5: When Dollars Turn into Variables Chapter 6: A Bit of Logic to Save the Day Flowchart and Pseudo code
E N D
CN1266 Network Scripting V1.2 Kemtis Kunanuraksapong MSIS with Distinction MCTS, MCDST, MCP, A+
Agenda • Chapter 4: Shelling Out Commands and Scripts • Chapter 5: When Dollars Turn into Variables • Chapter 6: A Bit of Logic to Save the Day • Flowchart and Pseudo code • Chapter 26: The Ten Most Important Cmdlets (1,7) • Chapter 27: Ten Common PowerShell Mistakes (5,6,7)
CMDLets • To see the list of the commands • Get-Command • Get-Command | More • Pipe (|) is used to pass the output of any command to another. See Chapter 7
CMDLets (Cont.) • Get-Help • Get-Help Get-Alias • Get-Help Get-Alias –detailed • More information • Get-Help Get-Alias -full • More technical information • Try • Get-help get-service
CMDLets (Cont.) • Try these: • Get-service –name eventlog, spooler • Get-service eventlog, spooler
One shell to rule them all • Command Shell – dir, md, rd • Windows script host • VBScript (.vbs) or JavaScript (.js) • Use CScript.exe or WScript.exe
Variables • What is variable? • Can contain character(s), symbol(s), and special character(s) • $MyVar • $A6 • ${Var with Space} • ${V@r} • Camel case notation - $ThisIsAnExample • Get-Help Set-Variable
Data Types • Kinds of values • Variants – can take on any data type • Primitive values – basic data types such as • Boolean • Char • Date • Integer • See more on Page 63
Working with data types • Try these code: • $a = 2 • $b = 3 • $c =$a+$b • Write-output $c • Try put “2” in stead of 2 • $a = “2” • $b=“3”
Working with data types (2) • By adding double quotation mark, it explicitly defines the variable as string or text • Plus sign becomes to concatenate the string instead of addition
Why should we explicitly define • Unexpected values • To reduce the chance of type mismatch • Clarity • Improved performance • PSH knows right away without checking the type
Why should we explicitly define (2) • Try this: • [int]$IntOnly = 100 • $Sum = 2 + $IntOnly • Write-output $sum • $IntOnly = “PowerShell Rules!” • Write-output $IntOnly +” Yes, it does” • $IntOnly.GetType().Name
Why should we explicitly define (3) • Table 5-1 on Page 67 shows the shortcut of data type for explicitly defined variable • Casting – a process or way to convert data type
Why should we explicitly define (4) • Try these: • $MyString = “ Windows PowerShell “ • $MyDouble = 2.0 • $OutString = $MyString + $MyDouble • Write-output $OutString • Try these: • $OutString = $MyDouble + $MyString
Why should we explicitly define (5) • Try these: • $OutString = [string]$MyDouble + $MyString • OR • $OutString = ($MyDouble –as [string]) + $MyString
Constant and Read-Only Var. • You have to use • Set-Variable [-Option {None | ReadOnly | Constant | Private | AllScope}] • Remove-Variable • Try: • Set-Variable PI 3.141 –option constant • Set-Variable School “Remington” –option Readonly • Write-output “Pi’s value is ” + $PI + “ This code is run at “ + $School
Automatic Variables • What is automatic variables? • Pre-assigned by PSH • See Table 5-2 on Page 72 - 73
Working with Objects • Properties? • Method? • Try code on Page 75 and 76
Star Trek Quiz Game • See Handout • Challenge: Modify the StarTrek Quiz so that it displays the correct answer for any question that the player misses
A Logic Primer • Automatic variables : $true, $false • And • Or • Exclusive (XOR) • Not • Try code on page 79
Order of Precedence • ( ) • Negate (Not) • And • Or • XOR
Logical Operator • See table 6-5 on Page 79 - 80 • Try the code on page80
IF / Else • Remember the flow chart? • $Name = “Kemtis” • If ($name –eq “Kemtis”){ Write-host “Hello Kemtis!” • } else { Write-host “Hello sir” • } • OR • If ($name –eq “Kemtis”){Write-host “Hello Kemtis!” }
IF / ElseIf/Else • If/Elseif/Else • $grade = 60 • If ($grade –ge 90){ Write-host “A” • }Else{ If ($grade –ge 80) { Write-host “B”} • Else{If ($grade -lt 80){Write-host “F”} • }}
IF / ElseIf/Else (3) • If/Elseif/Else • #Grade V2.0 • $grade = 60 • If ($grade –ge 90){ Write-host “A” • }ElseIf ($grade –ge 80) { Write-host “B” • }ElseIf ($grade -lt 80){Write-host “F”}
Switch Statement • $size = “M” • Switch($size){ • “S” {Write-host “Small”} • “M” {Write-host “Medium”} • “L” {Write-host “Large”} • default {Write-host “Unknown”} • }
Looping • For loop • ForEach loop • While loop • Do While loop • Do Until loop • Infinite loop
For Loop • For ($i =1; $i –le 5; $i++) • { • Write-Host $i • }
ForEach Loop • Foreach ($i in Get-Alias) • { • Write-Host $i.name • }
While Loop • $objRandom = New-Object Random • $val = $objRandom.Next(1,10) • While ($val –ne 7){ • Write-host (“You got a “ + $val + “…”) • $val = $objRandom.Next(1,10) • } • Write-host “Congrat! You got a 7”
Do While Loop • $objRandom = New-Object Random • do { • $val = $objRandom.Next(1,10) • Write-host (“You got a “ + $val + “…”) • } While ($val –ne 7) • Write-host “Congrat! You got a 7”
Do Until Loop • $objRandom = New-Object Random • do { • $val = $objRandom.Next(1,10) • Write-host (“You got a “ + $val + “…”) • } Until ($val –eq 7) • Write-host “Congrat! You got a 7”
Infinite Loop • $objRandom = New-Object Random • $val = $objRandom.Next(1,10) • While ($val –ne 10){ • Write-host (“You got a “ + $val + “…”) • $val = $objRandom.Next(1,10) • } • Write-host “Congrat! You got a 11”
Guess My Number Game • See handout • Homework: • Make the game more intuitive by adding additional instructions and guidance. (IE. You are getting very close) • Modify the game to allow the player to quit at any time, instead of just at the end of the current round of play.