Kemtis Kunanuraksapong MSIS with Distinction MCTS, MCDST, MCP, A+

Post on 05-Jan-2016

214 views 1 download

Transcript of Kemtis Kunanuraksapong MSIS with Distinction MCTS, MCDST, MCP, A+

CN1266 NETWORK SCRIPTING

Kemtis KunanuraksapongMSIS with DistinctionMCTS, MCDST, MCP, A+

AGENDA

Chapter 7: Working on a Pipeline Chapter 9: Bringing Strings into the

Limelight

WHAT IS PIPING

When you take the output of one command and direct it to the input of another command

Try this on command prompt Ipconfig | find “ipv4 address” Dir c:\windows\system32 | find “.exe”

STRINGING COMMANDS TOGETHER

Try this: Get-childitem c:\windows\system32 |

format-table Get-childitem c:\windows\system32 |

format-list Get-childitem c:\windows\system32 |

format-wide

STRINGING COMMANDS TOGETHER (2) Cmdlets use out-default as a default

format to shows the output All object are returned to the command as

a stream of data

GETTING THE RIGHT OUTPUT

Get-process | format-table Get-process | format-table –property id, name Get-process | format-table –property name, id Get-process | where-object {$_.Id –gt 1000} | format-

table –property name, cpu, id $_ refers to the current object in the pipe-line

Get-process | where-object {$_.Id –gt 1000} | select-object name, cpu, id | sort-object CPU, ID

CHAPTER 9 BRINGING STRINGS INTO THE LIMELIGHT

WHAT IS STRING?

A technical name for text A consecutive sequence of characters Empty VS Null Strings

Empty string – a string with zero length Null string – undefined string (no value, no

length, nothing)

LITERAL STRINGS

A literal string is enclosed by double quotes “this is the a literal string” + “… so the story continues…”

Here-Strings $RegularString = “First Line of string`n” + “Second line `n” + “Third line” Write-host $RegularString

LITERAL STRINGS (2)

Here-Strings $MyHereString = @“ First Line of string Second line Third line ”@ Write-host $MyHereString

You also can use quotation in here-string

COMBINING STRINGS

+ (Concatenation) – to combine string together See code in Page 120

You can implicitly or explicitly convert the data type into string See codes in Page 121

SPLITTING STRINGS

Method split() is used to spilt the string into array of strings $str = “this book is good!” $str.split()

SPLITTING STRINGS (2)

$myIP = “192.168.10.100” $ipArr = $myIP.split(“.”) Write-Host (“Number of elements in ipArr”

+ $ipArr.length) Write-Host (“First octet: “ + $ipArr[0]) Write-Host (“Second octet: “ + $ipArr[1]) Write-Host (“Third octet: “ + $ipArr[2]) Write-Host (“Fourth octet: “ + $ipArr[3])

SPLITTING STRINGS (3)

$myIP = “192.168,10;100” $ipArr = $myIP.split(“.,;”) Write-Host (“Number of elements in ipArr”

+ $ipArr.length) Write-Host (“First octet: “ + $ipArr[0]) Write-Host (“Second octet: “ + $ipArr[1]) Write-Host (“Third octet: “ + $ipArr[2]) Write-Host (“Fourth octet: “ + $ipArr[3])

SNIPPING OFF A PIECE OF A STRING

Method substring() $name = “Steve Seguis” $part1 = $name.substring(0,3) $part2 = $name.substring($name.length-

4,4) Write-Host ($part1 + $part2)

STRING SUBSTITUTIONS

$str = “Steve is EVIL!!!” $newstr = $str.replace(“EVIL”,”Good~”) Write-Host $newstr

STRING POSITIONS

Method IndexOf() is used to find the specific character in the string $email = “someone@dummies.com” $atpos = $email.IndexOf(“@”) $user = $email.substring(0, $atpos) $domain = $email.substring($atpos+1,

$email.length-($atpos+1)) Write-Host (“Username: “ + $user) Write-Host (“Domain: “ + $domain)

STRING POSITIONS (2)

$email = “My_invalid_email_address” If ($email.IndexOf(“@”) –lt 0){

Write-Host “Invalid email address!” }else{

Write-Host “Valid email address!” }

CASE OF STRINGS

Upper case ToUpper() method

Lower case ToLower() method

REGULAR EXPRESSION

A search pattern [RegEx]::IsMatch(“This book is really

interesting.”,”book”) [RegEx]::IsMatch(“I have 2 siblings”,”[0-

9]”) *NOTE* It is case sensitive

REGULAR EXPRESSION (2)

You can use escape string (\) if you want to search for special character on page 129 [RegEx]::IsMatch(“Visit us at

dummies.com”,”dummies\.com”) . (dot) is a single-character wildcard

[RegEx]::IsMatch(“bell”,”.ell”)

REGULAR EXPRESSION (3)

$username = “testuser1” [RegEx]::IsMatch($username,

“testuser[0-9]”)

If you want the name to end with either ‘a’ or ‘e’ $name = “Anna” [RegEx]::IsMatch($name,”Ann[ae]”)

REGULAR EXPRESSION (4)

If you want to exclude character from a match, you can negate a character set by prefixing it with the caret (^) [RegEx]::IsMatch(“food”,”[^fh]ood”)

See Table 9-1 on Page 131 for more information

DEFINE OPTIONAL

Question mask (?) indicates that the preceding character can exist zero times or one time [RegEx]::IsMatch(“favorite”,”favou?rite”) [RegEx]::IsMatch(“favourite”,”favou?rite”) [RegEx]::IsMatch(“Monday”,”Mon(day)?”)

REPEATING SEQUENCES

Plus (+) operator indicates that the preceding character can exist one or more times [RegEx]::IsMatch(“srvfile1”,”srv[a-z0-9]+”) [RegEx]::IsMatch(“srvfile1”,”srv[a-z]+[0-

9]”) [RegEx]::IsMatch(“Monday”,”Mon(day)?”)

REPEATING SEQUENCES (2)

star (*) operator indicates that the preceding character can exist zero times or more times [RegEx]::IsMatch(“Ann”,”Ann[a-z]*”)

Repetitve Format [RegEx]::IsMatch(“96813”,”[0-9] [0-9] [0-9]

[0-9] [0-9]” [RegEx]::IsMatch(“96813”,”[0-9] {5}”

REPEATING SEQUENCES (3)

Repetitve Format [RegEx]::IsMatch(“96813”,”[0-9] [0-9] [0-9]

[0-9] [0-9]” [RegEx]::IsMatch(“96813”,”[0-9] {5}” [RegEx]::IsMatch(“USERA”,”USER[A-Z]

{2,5}”) Ends in a sequence of two to five upper case

letters

ANCHOR TO MAINTAIN POSITION

^ - the match must occur at the beginning of the string [RegEx]::IsMatch(“SRVFILE1”,”^SRV[A-Z]

+[0-9]”) [RegEx]::IsMatch(“TESTSRVFILE1”,”^SRV[A

-Z]+[0-9]”)

ANCHOR TO MAINTAIN POSITION (2)

$- the match must occur at the end of the string [RegEx]::IsMatch(“SRVFILE1”,”SRV[A-Z]

+[0-9]$”) [RegEx]::IsMatch(“TESTSRVFILE1”,”SRV[A-

Z]+[0-9]$”) [RegEx]::IsMatch(“SRVFILE1TEST”,”SRV[A-

Z]+[0-9]$”)

COMING UP WITH ALTERNATIVES

[RegEx]::IsMatch(“Dummies.com”,”[A-za-z0-9]+\.(com|edu|net)”)

REGEX IN WINDOWS POWERSHELL

$email = “Somebody@dummies.com” If ($email –match “[A-za-z0-

9]+@dummies.com”){ Write-Host “$email is a dummies.com

email address” }

REGEX IN WINDOWS POWERSHELL (2) $str = “Visit us at www.dummies.com” $newstr = $str –replace “www\.[A-za-

z0-9]+\.(com|edu|net)”,”WEBSITE NAME KEPT SECRET”

Write-Host $newstr