mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-23 09:41:36 +00:00
Making some minor fixes
Adjusting some inconsistent names. Changing Remove-Array to Format-Array since Remove is not an approved Posh verb. Adding Kevin Marquette's blog because it's awesome Adding a simpler array reversal example
This commit is contained in:
parent
b30a88cd31
commit
11db56b81c
@ -41,6 +41,26 @@ Powershell as a Language:
|
||||
10 * 2 # => 20
|
||||
35 / 5 # => 7.0
|
||||
|
||||
# Single line comments start with a number symbol.
|
||||
|
||||
<#
|
||||
Multi-line comments
|
||||
like so
|
||||
#>
|
||||
|
||||
####################################################
|
||||
## 1. Primitive Datatypes and Operators
|
||||
####################################################
|
||||
|
||||
# Numbers
|
||||
3 # => 3
|
||||
|
||||
# Math
|
||||
1 + 1 # => 2
|
||||
8 - 1 # => 7
|
||||
10 * 2 # => 20
|
||||
35 / 5 # => 7.0
|
||||
|
||||
# Powershell uses banker's rounding
|
||||
# Meaning [int]1.5 would round to 2 but so would [int]2.5
|
||||
# division always returns a float. You must cast result to [int] to round
|
||||
@ -440,7 +460,7 @@ function New-Website() {
|
||||
[int]$port = 3000
|
||||
)
|
||||
BEGIN { Write-Verbose 'Creating new website(s)' }
|
||||
PROCESS { echo "name: $siteName, port: $port" }
|
||||
PROCESS { Write-Output "name: $siteName, port: $port" }
|
||||
END { Write-Verbose 'Website(s) created' }
|
||||
}
|
||||
|
||||
@ -545,7 +565,7 @@ True False Guitar Instrument
|
||||
And tell us how many instances of each process we have running
|
||||
Tip: Chrome and svcHost are usually big numbers in this regard
|
||||
#>
|
||||
Get-Process | Foreach ProcessName | Group-Object
|
||||
Get-Process | Foreach-Object ProcessName | Group-Object
|
||||
|
||||
<#
|
||||
Asynchronous functions exist in the form of jobs
|
||||
@ -581,28 +601,45 @@ $Area
|
||||
You may one day be asked to create a func that could take $start and $end
|
||||
and reverse anything in an array within the given range
|
||||
based on an arbitrary array
|
||||
Let's see one way to do that
|
||||
Let's see one way to do that and introduce another data structure
|
||||
#>
|
||||
|
||||
$testArray = 'a','b','c','d','e','f','g','h','i','j','k','l','m','n'
|
||||
$targetArray = 'a','b','c','d','e','f','g','h','i','j','k','l','m','n'
|
||||
|
||||
function Reverse-Range ($start, $end) {
|
||||
[System.Collections.ArrayList]$newArray = @()
|
||||
[System.Collections.ArrayList]$secondArray = @()
|
||||
function Format-Range ($start, $end) {
|
||||
[System.Collections.ArrayList]$firstSectionArray = @()
|
||||
[System.Collections.ArrayList]$secondSectionArray = @()
|
||||
[System.Collections.Stack]$stack = @()
|
||||
for ($i = 0; $i -lt $testArray.Length; $i++) {
|
||||
if ($i -lt $start) {
|
||||
$newArray.Add($testArray[$i]) > $null
|
||||
for ($index = 0; $index -lt $targetArray.Count; $index++) {
|
||||
if ($index -lt $start) {
|
||||
$firstSectionArray.Add($targetArray[$index]) > $null
|
||||
}
|
||||
elseif ($i -ge $start -and $i -le $end) {
|
||||
$stack.push($testArray[$i])
|
||||
elseif ($index -ge $start -and $index -le $end) {
|
||||
$stack.Push($targetArray[$index])
|
||||
}
|
||||
elseif ($i -gt $end) {
|
||||
$secondArray.Add($testArray[$i]) > $null
|
||||
elseif ($index -gt $end) {
|
||||
$secondSectionArray.Add($targetArray[$index]) > $null
|
||||
}
|
||||
}
|
||||
$endArray = $newArray + $stack.ToArray() + $secondArray
|
||||
Write-Output $endArray
|
||||
$returnArray = $firstSectionArray + $stack.ToArray() + $secondSectionArray
|
||||
Write-Output $returnArray
|
||||
}
|
||||
|
||||
# The previous method works, but it uses extra memory by allocating new arrays
|
||||
# It's also kind of lengthy
|
||||
# Let's see how we can do this without allocating a new array
|
||||
# This is slightly faster as well
|
||||
|
||||
function Format-Range ($start, $end) {
|
||||
while ($start -lt $end)
|
||||
{
|
||||
$temp = $targetArray[$start]
|
||||
$targetArray[$start] = $targetArray[$end]
|
||||
$targetArray[$end] = $temp
|
||||
$start++
|
||||
$end--
|
||||
}
|
||||
return $targetArray
|
||||
}
|
||||
```
|
||||
Powershell as a Tool:
|
||||
@ -698,6 +735,7 @@ foreach ($server in $serverList) {
|
||||
Interesting Projects
|
||||
|
||||
* [Channel9](https://channel9.msdn.com/Search?term=powershell%20pipeline#ch9Search&lang-en=en) PowerShell tutorials
|
||||
* [KevinMarquette's Powershell Blog](https://powershellexplained.com/) Really excellent blog that goes into great detail on Powershell
|
||||
* [PSGet](https://github.com/psget/psget) NuGet for PowerShell
|
||||
* [PSReadLine](https://github.com/lzybkr/PSReadLine/) A bash inspired readline implementation for PowerShell (So good that it now ships with Windows10 by default!)
|
||||
* [Posh-Git](https://github.com/dahlbyk/posh-git/) Fancy Git Prompt (Recommended!)
|
||||
|
Loading…
Reference in New Issue
Block a user