PoshCode Archive  Artifact Content

Artifact 367775dbec4677f3115ab343e38643e076973d8bd67f23059187808547257d07:

  • File Starwars-Get-Droids.ps1 — part of check-in [f82436d310] at 2018-06-10 13:45:28 on branch trunk — Inspired from http://www.vtesseract.com/post/16203019395/more-powershell-fun-star-wars (user: James Vahanian size: 4229)

# encoding: utf-8
# api: powershell
# title: Starwars Get-Droids
# description: Inspired from http://www.vtesseract.com/post/16203019395/more-powershell-fun-star-wars
# version: 0.1
# type: script
# author: James Vahanian
# license: CC0
# function: Get-Droids
# x-poshcode-id: 4760
# x-archived: 2014-01-04T21:34:46
# x-published: 2014-01-02T08:50:00
#
#
#Written for training Materials by James Vahanian

#region - define Objects/Characters
$jedi = @()
    $jedi1 = New-Object –TypeName PSObject
    $jedi1 | Add-Member -MemberType NoteProperty –Name Name –Value "Obiwan Kenobe"
    $jedi1 | Add-Member –MemberType NoteProperty –Name NickName –Value "Old Ben"
    $jedi1 | Add-Member –MemberType NoteProperty –Name Status –Value "Retired"
    $jedi1 | Add-Member -MemberType ScriptProperty -Name GetName -value {$this.Name}

    $jedi2 = New-Object –TypeName PSObject
    $jedi2 | Add-Member -MemberType NoteProperty –Name Name –Value "Master Yoda"
    $jedi2 | Add-Member –MemberType NoteProperty –Name NickName –Value "Yoda"
    $jedi2 | Add-Member –MemberType NoteProperty –Name Status –Value "Retired"
    $jedi2 | Add-Member -MemberType ScriptProperty -Name GetName -value {$this.Name}
$jedi += $jedi1, $jedi2

$droids = @()
    $droid1 = New-Object –TypeName PSObject
    $droid1 | Add-Member -MemberType NoteProperty –Name Name –Value "R2D2"
    $droid1 | Add-Member –MemberType NoteProperty –Name Model –Value "Astro Droid"
    $droid1 | Add-Member –MemberType NoteProperty –Name Function –Value "Help bring in the Moisture Harvest For Master Luke"
    $droid1 | Add-Member –MemberType NoteProperty –Name RealFunction –Value "Get Deathstar plans to $ObiWan"
    $droid1 | Add-Member –MemberType NoteProperty –Name PreviousOwner –Value "Leia Morgana"
    $droid1 | Add-Member -MemberType ScriptProperty -Name GetName -value {$this.Name}

    $droid2 = New-Object –TypeName PSObject
    $droid2 | Add-Member -MemberType NoteProperty –Name Name –Value "C3PO"
    $droid2 | Add-Member –MemberType NoteProperty –Name Model –Value "Protocol Droid - Human Cyborg Relations"
    $droid2 | Add-Member –MemberType NoteProperty –Name Function –Value "General annoyance and Comedic Relief, oh and communicate with Moisture Vaporators"
    $droid2 | Add-Member –MemberType NoteProperty –Name RealFunction –Value "Assist R2D2 with assigned mission"
    $droid2 | Add-Member –MemberType NoteProperty –Name PreviousOwner –Value "Leia Morgana"
    $droid2 | Add-Member -MemberType ScriptProperty -Name GetName -value {$this.Name}
$droids += $droid1, $droid2
$ObiWan = ($jedi.GetName -eq 'Obiwan Kenobe')
#endregion

#region - Define Default properties
$defaultProperties = @(‘Name’,'Model','Function')
$defaultDisplayPropertySet = New-Object System.Management.Automation.PSPropertySet(‘DefaultDisplayPropertySet’,[string[]]$defaultProperties)
$PSStandardMembers = [System.Management.Automation.PSMemberInfo[]]@($defaultDisplayPropertySet)
$droid1 | Add-Member MemberSet PSStandardMembers $PSStandardMembers
$droid2 | Add-Member MemberSet PSStandardMembers $PSStandardMembers
#endregion

Function Get-Droids {
    PARAM (
    [Parameter(Mandatory=$True)]
    [PSCustomObject]$PotentialDroids,
    [Parameter(Mandatory=$False)]
    [bool]$UseForce
    )
    foreach($droid in $PotentialDroids)
    {
        if($droid.Function -match "Deathstar")
        {
            Write-Host "Detain Droids for questioning!" -ForegroundColor Red
            return $True
        }
        elseif ($UseForce)
        {
           $droid |select Name, RealFunction |ft -AutoSize -force
        }
        else
        {
            return $False
        }
    }   
}

#region - Stormtrooper Checkpoint
$StormTrooperSearch = Get-Droids -PotentialDroids $droids -UseForce $False
If($StormTrooperSearch -eq $False){ Write-Host "These's aren't the Droids we're looking for, Move Along" -ForegroundColor Green}
#endregion

#region - Jedi check Droids
$JediSearch = Get-Droids -PotentialDroids $droids -UseForce $True
If($JediSearch -eq $False)
{ 
    Write-Host "Who the heck are these Droids?!?" -ForegroundColor Red
}
else
{
    $JediSearch
}
#endregion