Functions
Simple function
Defining the function for calculating the circle area
function Calculate-Circle {
$mypi = 3.14159265359
[float]$radius = read-host "What is the radius"
$surface = $radius*$radius*$mypi
write-host "The surface area of a circle with radius $radius is $surface"
}
Executing it
Calculate-Circle
Making some comments
You can add some comments just so that if you revise code, you know what you did before
- A # sign for single line comment
- the <# my comment #> for multiline comments A comments will be ignored by powershell
<#
This is the best function for calculating the size of a circle
#>
function Calculate-Circle {
$mypi = 3.14159265359
#Reading in as a float so that we can also decimal numbers
[float]$radius = read-host "What is the radius"
$surface = $radius*$radius*$mypi
write-host "The surface area of a circle with radius $radius is $surface"
}
Non interactive function
Defining the function for calculating the circle area
function Calculate-Circle {
param(
[float]$radius = 10
)
$mypi = 3.14159265359
$surface = $radius*$radius*$mypi
return $surface
}
Executing it
Calculate-Circle -radius 15
Storing it
$radius = 15
$surface = Calculate-Circle -radius $radius
write-host "The surface area of a circle with radius $radius is $surface"
Multiple arguments
Defining the function for calculating the surface area of
function Calculate-Rectangle {
param(
[float]$height = 10,
[float]$width = 10
)
$surface = $height*$width
return $surface
}
Trying it out
Calculate-Rectangle -height 2 -width 3
Decorating arguments
Forcing values
function Calculate-RectangleRequired {
param(
[Parameter(Mandatory=$true)][float]$height = 10,
[Parameter(Mandatory=$true)][float]$width = 10
)
$surface = $height*$width
return $surface
}
Calculate-RectangleRequired
Defining position
function Calculate-RectanglePosition {
param(
[Parameter(Position=1)][float]$height = 10,
[Parameter(Position=0,Mandatory=$true)][float]$width = 10
)
write-host "H: $height W: $width "
$surface = $height*$width
return $surface
}
Calculate-RectanglePosition
Calculate-RectanglePosition 3 8
Defining aliasses
function Calculate-RectanglePosition {
param(
[Parameter(Position=0)][Alias("h")][float]$height = 10,
[Parameter(Position=1)][Alias("w")][float]$width = 10
)
write-host "H: $height W: $width "
$surface = $height*$width
return $surface
}
Calculate-RectanglePosition -h 3 -w 4
The switch parameter
function Calculate-RectanglePosition {
param(
[Parameter(Position=0)][Alias("h")][float]$height = 10,
[Parameter(Position=1)][Alias("w")][float]$width = 10,
[switch]$print=$false
)
if($print) {
write-host "H: $height W: $width "
}
$surface = $height*$width
return $surface
}
Calculate-RectanglePosition -h 3 -w 4
Calculate-RectanglePosition -h 3 -w 4 -print
Cmdletbinding
function Calculate-Circle {
[cmdletbinding()]
param(
[float]$radius = 10
)
$mypi = 3.1415
write-verbose "Calculation : $mypi * $radius * $radius"
$surface = $radius*$radius*$mypi
3/0
return $surface
}
Calculate-Circle
Calculate-Circle -ErrorAction
Calculate-Circle -ErrorAction SilentlyContinue -verbose
ValidatePattern
function Send-FakeEmail {
param(
[ValidatePattern("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$")][string]$to,
[string]$message
)
Write-host "Sending $message to $to"
}
send-fakeemail -message "Hello Alice" -to "alice"
send-fakeemail -message "Hello Alice" -to "alice@gmail.com"
ValidateRange
function Set-TargetYear {
param(
[ValidateRange(2017,2050)][int]$year
)
Write-host "Hopefully we get our climate goals done by $year"
}
set-targetyear -year 1999
set-targetyear -year 2060
set-targetyear -year 2030
ValidateSet
function Set-AlarmStatus {
param(
[ValidateSet("Critical","Normal","Boring")][string]$status
)
Write-host "Set alarm status to $status"
}
set-alarmstatus -status "FUBAR"
set-alarmstatus -status "Critical"
References: email regex more parameter stuff