Fundamental of Powershell Scripting
As a developer/programmer, if you have developed expertise in one programming language - learning another is just about understanding the syntax, the rest of the concepts are similar among all languages. So to get started developing automation scripts for Powershell, here are the things you care about:
- Read input & write output
- Data Types
- Operators
- Conditional Statements
- Looping Statement
- Functions
- Object oriented scripting
Read input & write output
Output to console:
Lets start with "Hello World!", in powershell there are two ways to output to console:
- Write-Host
- Write-Output
The second one (Write-Output) is more preferred way to write to console as it does not destroy pipeline inputs.
You can find the code here
Input from console:
Reading inputs from console is super easy in powershell.
Find the code above on my Github Gist here.
Data Types
Powershell is based on .NET Framework (and Powershell Core on .NET Core) and inherits all .NET CLR data types. The primative/values type available are:
- byte
- sbyte
- short
- ushort
- int
- uint
- long
- ulong
- float
- double
- decimal
- char
- bool
- Datetime
Find the code above on my GitHub Gist here.
In Powershell, both single quote (') and double quote (") can represent string.However, single quote treat string as string literals while double quotes replace any placeholders as shown below.
Operator (Arithmetic, Comparison & Logical)
Arithematic:
Like any other language, Powershell also support common arithmetic operators like +, -, *, / and %.
Comparison:
The comparison operators share syntax with shell scripting like linux where -eq, -ne -gt, -lt, le and ge are used in replacement of ==, !=, >, <, <= and >= respectively.
Logical:
Powershell logical operators for And, Or and not are -And, -Or, -Not or ! respectively.
Find the code above on my GitHub Gist here.
Conditional Statements
If Else statements:
Switch:
Powershell switch conditionals are similar to many C like programming language. Unlike C#, powershell switch does not require break in the end of each case so you can evaluate multiple cases if you want.
Now here is how powershell switch statements are powerfull, by default powershell switch cases matches case-insensitively. You can make to match case-sensitive. One the most awesome things about powershell switch is wildcard based case matches. See example below:
The code for conditional statements can be found here.
While Loop: While loop keeps repeating set of instructions as long as the condition in while is true.
Do-While Loop: Just like in many other programming languages do-while also secures a place in Powershell and at atleast runs once a keep looping as long as the condition in while is true.
Do-Until Loop: This is a new category of loop that Powershell has introduced and exactly opposite of do-while loop. Where the loop keeps running until a specific condition is set to true. Like do-while loop it also executes atleast once.
The code examples for looping statements is available on my Gist github here.
Powershell switch conditionals are similar to many C like programming language. Unlike C#, powershell switch does not require break in the end of each case so you can evaluate multiple cases if you want.
Now here is how powershell switch statements are powerfull, by default powershell switch cases matches case-insensitively. You can make to match case-sensitive. One the most awesome things about powershell switch is wildcard based case matches. See example below:
The code for conditional statements can be found here.
Looping Statements
Powershell makes working with iteration really simple. Lets take a took at some example below:
For Loop: Perhaps this is the most common loop among many programming/scripting languages where loop execute statement/s for known number of iterations.
Foreach Loop: Powershell foreach loop is ideal for iterating over collection of objects.
For Loop: Perhaps this is the most common loop among many programming/scripting languages where loop execute statement/s for known number of iterations.
Foreach Loop: Powershell foreach loop is ideal for iterating over collection of objects.
While Loop: While loop keeps repeating set of instructions as long as the condition in while is true.
Do-While Loop: Just like in many other programming languages do-while also secures a place in Powershell and at atleast runs once a keep looping as long as the condition in while is true.
Do-Until Loop: This is a new category of loop that Powershell has introduced and exactly opposite of do-while loop. Where the loop keeps running until a specific condition is set to true. Like do-while loop it also executes atleast once.
The code examples for looping statements is available on my Gist github here.
Functions & CmdLets
Powershell functions share syntax with Javascript functions. Let see some quick example of basic functions. Below you can see 3 function examples, one that takes no arguments nor return anything, second that take an argument of type int but doesn't return anything and third that take an argument of type int and returns an int that is double of the value passed.
The code above is available here.
The functions we have seen above are generally not powershell style of writing function. In a standadrd powershell function parameters are passed through param. Let see some examples.
The script shown above is available here.
Lets go through it.
Example 1: In Powershell, arguments are preferred to be defined under param function. Below you see a method that takes a parameter $text and if caller doesn't pass a value to it, default is set to NA string.
Example 2: As you have seen in previous example that a function can be called without passing a parameter but we also force the consumer to pass an argument. This is achieved using Parameter attribute passing in Mandatory value as shown below on line 13.
Example 3: When you are working with function you will often want to receive parameter input from pipes. We can take a value from the result of pipeline by using Parameter attribute passing in ValueFromPipeline as shown on line 22.
Example 4: We can also force the caller to pass the function parameter a specific data type input. Below the function expects only integer input value from pipeline.
Example 5: Often value in the pipeline are complex object and cannot match by value since they don't have a common Type in those cases you might want to support parameter mapping of pipeline that only matches a property name so that if the object has a property field that matches with the parameter name of the function then it will bind successfully. This is achieved using Parameter attribute passing in ValueFromPipelineByPropertyName as shown on line 40 & 50.
Example 6: Sometimes you might want to specific short parameter names for convenience or probably want to change a parameter name and also want to support previous versions of your script (if you change parameter name and not specify an alias for the old name, someone who updates from older version of your script to newer version will break his code). You can specify an alias to deal that act as an alternate name to your parameter as shown in line 54 and used in line 57.
The example shown above can be found here.
Object oriented scripting
Since Powershell is .Net based scripting and automation tool, it uses CLR and .Net runtime to execute scripts. Just as in C# everything inherits object class, powershell follows the same. Here is how you will create a new object in Powershell.
Lets also see a quick example of instantiating a .NET object and calling different methods on it.
On the example above we create an object of Queue defined in .NET namespace System.Collections then we enqueue two numbers, check counts and then dequeue one item.
In Powershell, calling static method is done using :: as shown below. We use Math lib and calling its absolute method that return absolute of a number.
You can find the code for this section on my GitHub Gist here.
elazığ
ReplyDeletegümüşhane
kilis
siirt
sakarya
E32VG
ankara parça eşya taşıma
ReplyDeletetakipçi satın al
antalya rent a car
antalya rent a car
ankara parça eşya taşıma
GSZQXJ
amasya evden eve nakliyat
ReplyDeleteeskişehir evden eve nakliyat
ardahan evden eve nakliyat
manisa evden eve nakliyat
karaman evden eve nakliyat
Z17
BDAD0
ReplyDelete%20 binance referans kodu
50339
ReplyDeleteısparta Mobil Sohbet Bedava
Bitlis Rastgele Sohbet Siteleri
Düzce Sesli Mobil Sohbet
kars kadınlarla görüntülü sohbet
sivas canlı görüntülü sohbet
tokat yabancı görüntülü sohbet uygulamaları
çankırı sesli sohbet siteler
edirne kızlarla rastgele sohbet
kütahya yabancı sohbet
AAD4C
ReplyDeletebybit
binance referans kimliği nedir
eşek sütü sabunu
en düşük komisyonlu kripto borsası
ucuz sabun toptan
eşek sütü sabunu
keçi sütü bal sabunu
argan sabunu
katran sabunu
406A0
ReplyDeletereferans kimliği
bingx
referans kod
defne sabunu
güvenilir kripto para siteleri
mexc
kayısı sabunu
kefir sabunu
gate io
8A023
ReplyDeletebybit
binance
sohbet canlı
vindax
copy trade nedir
coinex
bitcoin hesabı nasıl açılır
referans kodu
en eski kripto borsası
BC9CC
ReplyDeletesanal güvenilir şov
Great post, thanks for sharing it
ReplyDelete0C464
ReplyDeletewhatsapp görüntülü show güvenilir
06857
ReplyDeleteücretli show
9D09F878B2
ReplyDeleteücretli şov
görüntülü şov
görüntülü show
whatsapp görüntülü show güvenilir
ücretli show
canli web cam show
skype şov
şov
canli cam show
B4233892F4
ReplyDeletelifta
green temptation
delay
sinegra
fx15
ereksiyon hapı
vigrande
themra macun
yapay kızlık zarı
1820260314
ReplyDeletecam show
fx15
skype şov
ücretli şov
kaldırıcı
cobra vega
viga
delay
maxman
21FDA9B19F
ReplyDeletenovagra
maxman
skype şov
görüntülü show
whatsapp görüntülü show güvenilir
cialis
viagra
skype show
whatsapp görüntülü şov
1129C33788
ReplyDeletewhatsapp sanal şov
F67E498DD3
ReplyDeletegörüntülü şov whatsapp numarası
whatsapp görüntülü show güvenilir
cobra vega
cam show
sinegra 100 mg
skype şov
yapay kızlık zarı
skype show
maxman
512BE36A72
ReplyDeletebufalo içecek
delay
lifta
green temptation
cam show
whatsapp görüntülü şov
cobra vega
telegram görüntülü şov
ereksiyon hapı
80A927A07E
ReplyDeletebayan beğeni satın al
50E72DEC5D
ReplyDeleteücretli show
sinegra 100 mg
whatsapp görüntülü şov
degra 100 mg
performans arttırıcı
bufalo içecek
telegram show
skype şov
görüntülü şov whatsapp numarası
91CF543E43
ReplyDeletetakipçi fiyat
9759D08217
ReplyDeleteyabancı takipçi
Türkiye Posta Kodu
Titan War Hediye Kodu
İdle Office Tycoon Hediye Kodu
Township Promosyon Kodu
Titan War Hediye Kodu
Dragon City Elmas Kodu
Stumble Guys Elmas Kodu
War Robots Hediye Kodu
8B79EF61BE
ReplyDeleteorganik takipçi satın al
Para Kazandıran Oyunlar
M3u Listesi
Total Football Hediye Kodu
Rise Of Kingdoms Hediye Kodu
Pubg New State Promosyon Kodu
Bitcoin En Güvenilir Nereden Alınır
Lords Mobile Promosyon Kodu
Türkiye Posta Kodu
A450B8C4B2
ReplyDeleteYeni Telegram Mining Botları
Telegram Güvenilir Madencilik Botları
Telegram Para Kazanma Grupları
Telegram Güvenilir Coin Kazanma Botları
Yeni Telegram Airdrop Botları
17E8DA5935
ReplyDeleteEn İyi Telegram Oyun Botları
Airdrop Oyunları
Yeni Telegram Airdrop Oyunları
Telegram Coin Kasma Nedir
En İyi Telegram Kripto Oyunları
76A06EB1B0
ReplyDelete-
-
kuşadası eskort
-
-