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

results matching ""

    No results matching ""