Giter Club home page Giter Club logo

pskoans's Introduction

PowerShell Koans

PSKoans Logo
Build Status
Coverage Status

About the Author

Joel Sallow

Synopsis

Inspired by Chris Marinos's fantastic F# koans, the goal of the PowerShell koans is to teach you PowerShell by presenting you with a set of questions. Each kōan (each question) is represented by a failing Pester test. Your goal is to make those tests pass by filling out the correct answer, or writing the correct code. The koans start very simple to get you familiar with the basic concepts and progress towards more difficult. Teaching you multiple beginner, intermediate and advanced aspects of PowerShell in the process.

To get started please navigate to prerequisites and getting started.

Table of Contents

Prerequisites

  • Windows PowerShell version 5.1 / PowerShell 6+
  • NuGet
  • Pester

If you've never installed PowerShell modules before, you need to first install the NuGet PackageProvider to enable modules to be installed:

Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force

To install the latest version of Pester, use the appropriate command for your version of PowerShell:

# PS 5.1 (upgrade to latest Pester)
Install-Module Pester -Force -SkipPublisherCheck -Scope CurrentUser

# PS 6.0+ (Install Pester under current user)
Install-Module Pester -Scope CurrentUser

Getting Started

Install from Gallery

  1. Install-Module PSKoans -Scope CurrentUser

Or Download the Repo

  1. git clone the repository into your desired directory, or download the module zip file from the build artifacts available on this page.
  2. From a normal powershell session run Get-ChildItem -Recurse | Unblock-File in that directory to remove the "downloaded from internet" flag that blocks them from running.
  3. Check Get-ExecutionPolicy: if it says 'Restricted' or 'Undefined', you need to also run Set-ExecutionPolicy RemoteSigned in order to allow the scripts to run.
  4. Add the repository folder to $env:PSModulePath so that PowerShell can see it.
    • From the repository main folder, run: $env:PSModulePath = "$(Get-Location)$([IO.Path]::PathSeparator)${env:PSModulePath}"

Start your Journey

1. Run Show-Karma to start your journey towards PowerShell enlightenment

You will be presented with a page describing your goal:

    Welcome, seeker of enlightenment.
    Please wait a moment while we examine your karma...

Describing 'Equality' has damaged your karma.

    You have not yet reached enlightenment.

    The answers you seek...

Expected strings to be the same, but they were different.
Expected length: 5
Actual length:   2
Strings differ at index 0.
Expected: 'True!'
But was:  '__'
-----------^

    Please meditate on the following code:

[It] expects you to fill in values
at <ScriptBlock>, C:\Users\Joel\PSKoans\Foundations\AboutAssertions.Koans.ps1: line 32
32:        '__' | Should -Be 'True!'

    ▌ Mountains are merely mountains.

    You examine the path beneath your feet...

 [AboutAssertions]: [――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――] 0/4

 [Total]: [―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――] 1/279

Type 'Show-Karma -Meditate' when you are ready to begin your meditations.

Inspect the red messages carefully, most importantly the last one. The error message contains path to the file that you need to edit in order to progress forward. In this case, you'll need to examine Foundations\AboutAssertions.Koans.ps1.

2. Run Show-Karma -Meditate to open your Koans folder

Navigate to Foundations\AboutAssertions.Koans.ps1. Near the top you'll see:

It 'is a simple comparison' {
    # Some truths are absolute.
    '__' | Should -Be 'True!'
}

The __ represents a blank for you to fill, and | Should -Be 'True!' shows the expected result. To pass this koan you need to replace __ with True!, like this: 'True!' | Should -Be 'True!'.

3. Run Show-Karma again to see how you did

You passed your first koan! You'll notice that your overall progress updated to 1/279 and you are presented with the next challenge.

    Welcome, seeker of enlightenment.
    Please wait a moment while we examine your karma...

Describing 'Equality' has damaged your karma.

    You have not yet reached enlightenment.

    The answers you seek...

Expected 3, but got .

    Please meditate on the following code:

[It] expects you to fill in values
at <ScriptBlock>, C:\Users\Joel\PSKoans\Foundations\AboutAssertions.Koans.ps1: line 32
32:        __ | Should -Be (1 + 2)

    ▌ The most important thing is to find out what is the most important thing.

    You examine the path beneath your feet...

 [AboutAssertions]: [▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰―――――――――――――――――――――――――――――――――――――――――――――] 1/4

 [Total]: [―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――] 1/279

Type 'Show-Karma -Meditate' when you are ready to begin your meditations.

You are on your own from here, but the progression should be fairly smooth. If you need help, you can always ask around in the PowerShell communities:

Good luck!

Contributing

If you would like to contribute to PSKoans, please check out the Contributing document.

pskoans's People

Contributors

vexx32 avatar indented-automation avatar rdbartram avatar nqui avatar tomlarse avatar puthuppu avatar thomasrayner avatar vercellone avatar evworth avatar chrislgardner avatar gpduck avatar 6aae10 avatar brianmakes avatar friedrichweinmann avatar gep13 avatar nohwnd avatar iisresetme avatar steviecoaster avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.