330 likes | 452 Views
Kemtis Kunanuraksapong MSIS with Distinction MCTS, MCDST, MCP, A+. CN1266 Network Scripting. Chapter 7: Working on a Pipeline Chapter 9: Bringing Strings into the Limelight. Agenda. When you take the output of one command and direct it to the input of another command
E N D
Kemtis Kunanuraksapong MSIS with Distinction MCTS, MCDST, MCP, A+ CN1266 Network Scripting
Chapter 7: Working on a Pipeline Chapter 9: Bringing Strings into the Limelight Agenda
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” What is Piping
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
Cmdlets use out-default as a default format to shows the output • All object are returned to the command as a stream of data Stringing Commands Together (2)
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 Getting the right output
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) What is String?
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
Here-Strings • $MyHereString = @“ • First Line of string • Second line • Third line • ”@ • Write-host $MyHereString • You also can use quotation in here-string Literal strings (2)
+ (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 Combining strings
Method split() is used to spilt the string into array of strings • $str = “this book is good!” • $str.split() Splitting Strings
$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 (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)
Method substring() • $name = “Steve Seguis” • $part1 = $name.substring(0,3) • $part2 = $name.substring($name.length-4,4) • Write-Host ($part1 + $part2) Snipping off a piece of a string
$str = “Steve is EVIL!!!” $newstr = $str.replace(“EVIL”,”Good~”) Write-Host $newstr String Substitutions
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
$email = “My_invalid_email_address” • If ($email.IndexOf(“@”) –lt 0){ • Write-Host “Invalid email address!” • }else{ • Write-Host “Valid email address!” • } String Positions (2)
Upper case • ToUpper() method • Lower case • ToLower() method Case of Strings
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
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 (2)
$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 (3)
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 Regular Expression (4)
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)?”) Define optional
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
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 (2)
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 Repeating sequences (3)
^ - 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
$- 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]$”) Anchor to maintain position (2)
[RegEx]::IsMatch(“Dummies.com”,”[A-za-z0-9]+\.(com|edu|net)”)[RegEx]::IsMatch(“Dummies.com”,”[A-za-z0-9]+\.(com|edu|net)”) Coming up with alternatives
$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
$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 RegEx in Windows PowerShell (2)