Upload
jasper-gardner
View
219
Download
1
Embed Size (px)
Citation preview
CN1266 Network Scripting V1.2
Kemtis KunanuraksapongMSIS with Distinction
MCTS, MCDST, MCP, A+
Agenda
Chapter 4: Shelling Out Commands and ScriptsChapter 5: When Dollars Turn into VariablesChapter 6: A Bit of Logic to Save the DayFlowchart and Pseudo codeChapter 26: The Ten Most Important Cmdlets (1,7)Chapter 27: Ten Common PowerShell Mistakes (5,6,7)
CMDLets
To see the list of the commandsGet-CommandGet-Command | MorePipe (|) is used to pass the output of any command to another. See Chapter 7
CMDLets (Cont.)
Get-HelpGet-Help Get-AliasGet-Help Get-Alias –detailed
More information
Get-Help Get-Alias -fullMore technical information
TryGet-help get-service
CMDLets (Cont.)
Try these:Get-service –name eventlog, spoolerGet-service eventlog, spooler
One shell to rule them all
Command Shell – dir, md, rdWindows 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 - $ThisIsAnExampleGet-Help Set-Variable
Data Types
Kinds of valuesVariants – can take on any data typePrimitive values – basic data types such as
BooleanCharDateIntegerSee more on Page 63
Working with data types
Try these code:$a = 2$b = 3$c =$a+$bWrite-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 textPlus sign becomes to concatenate the string instead of addition
Why should we explicitly define
Unexpected valuesTo reduce the chance of type mismatch
ClarityImproved performance
PSH knows right away without checking the type
Why should we explicitly define (2)
Try this:[int]$IntOnly = 100$Sum = 2 + $IntOnlyWrite-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 variableCasting – a process or way to convert data type
Why should we explicitly define (4)
Try these:$MyString = “ Windows PowerShell “$MyDouble = 2.0$OutString = $MyString + $MyDoubleWrite-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 useSet-Variable [-Option {None | ReadOnly | Constant | Private | AllScope}]Remove-Variable
Try:Set-Variable PI 3.141 –option constantSet-Variable School “Remington” –option ReadonlyWrite-output “Pi’s value is ” + $PI +
“ This code is run at “ + $School
Automatic Variables
What is automatic variables?Pre-assigned by PSHSee Table 5-2 on Page 72 - 73
Working with Objects
Properties?Method?Try code on Page 75 and 76
Star Trek Quiz Game
See HandoutChallenge: Modify the StarTrek Quiz so that it displays the correct answer for any question that the player misses
A Logic Primer
Automatic variables : $true, $falseAndOrExclusive (XOR)NotTry code on page 79
Order of Precedence
( )Negate (Not)AndOrXOR
Logical Operator
See table 6-5 on Page 79 - 80Try 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”}
ORIf ($name –eq “Kemtis”){Write-host “Hello Kemtis!” }
IF / ElseIf/Else
If/Elseif/Else$grade = 60If ($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 = 60If ($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 loopForEach loopWhile loopDo While loopDo Until loopInfinite 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 Randomdo { $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 Randomdo { $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 handoutHomework:
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.