Kemtis Kunanuraksapong MSIS with Distinction MCTS, MCDST, MCP, A+
Chapter 7: Working on a Pipeline Chapter 9: Bringing Strings into the Limelight
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”
Try this: Get-childitem c:\windows\system32 | format- table Get-childitem c:\windows\system32 | format- list Get-childitem c:\windows\system32 | format- wide
Cmdlets use out-default as a default format to shows the output All object are returned to the command as a stream of data
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
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)
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
Here-Strings $MyHereString First Line of string Second line Third line Write-host $MyHereString You also can use quotation in here-string
+ (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
Method split() is used to spilt the string into array of strings $str = “this book is good!” $str.split()
$myIP = “ ” $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])
$myIP = “ ,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])
Method substring() $name = “Steve Seguis” $part1 = $name.substring(0,3) $part2 = $name.substring($name.length-4,4) Write-Host ($part1 + $part2)
$str = “Steve is EVIL!!!” $newstr = $str.replace(“EVIL”,”Good~”) Write-Host $newstr
Method IndexOf() is used to find the specific character in the string $ = $atpos = $user = $ .substring(0, $atpos) $domain = $ .substring($atpos+1, $ .length-($atpos+1)) Write-Host (“Username: “ + $user) Write-Host (“Domain: “ + $domain)
$ = “My_invalid_ _address” If –lt 0){ Write-Host “Invalid address!” }else{ Write-Host “Valid address!” }
Upper case ToUpper() method Lower case ToLower() method
A search pattern [RegEx]::IsMatch(“This book is really interesting.”,”book”) [RegEx]::IsMatch(“I have 2 siblings”,”[0-9]”) *NOTE* It is case sensitive
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”)
$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]”)
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
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)?”)
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)?”)
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}”
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
^ - 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]”)
$- 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]$”)
[RegEx]::IsMatch(“Dummies.com”,”[A-za-z0- 9]+\.(com|edu|net)”)
$ = If ($ –match Write-Host “$ is a dummies.com address” }
$str = “Visit us at $newstr = $str –replace “www\.[A-za-z0- 9]+\.(com|edu|net)”,”WEBSITE NAME KEPT SECRET” Write-Host $newstr