Fix Release Management Error ‘Found value ‘aBcD’ with no corresponding key’

How to fix the error: ‘The running command stopped because the preference variable “ErrorActionPreference” or common parameter is set to Stop: Found value ‘aBcD’ with no corresponding key’ in Relese Management Continue reading Fix Release Management Error ‘Found value ‘aBcD’ with no corresponding key’

PowerShell DSC for SharePoint

I stopped the work on my DSC modules for SharePoint (xSharePointAdministration) some time ago because the PowerShell team was working on the xSharePoint module. The module has now reached Version 1.0 and was renamed to SharePointDSC. The module is already pretty mayor and can be used to deploy SharePoint 2013 and SharePoint 2016. It supports PowerShell 4.0 and 5.0. I already started using it in some customer projects. It’s not yet perfect – but what the PowerShell team does is really “Open Development” and not just “Open source”. I contributed the xSPFarmSolution resource, the version parameter for the xFeature resource … Continue reading PowerShell DSC for SharePoint

Run Pester tests in PowerShell ISE with IsePester

Today I stumbled upon a package in chocolatey that I wasn’t aware of. It’s called IsePester from @dfinke. If you develop you PowerShell scripts with ISE and run Pester tests this is a really nice package. If you haven’t played around with chocolatey – do it. It’s a really need packaging manger that makes setting up your dev machines really easy. To install chocolatey just run the following command in PowerShell: To use Pester you have to install it. If it is already installed you can override it with -–force / -f Install IsePester the same way… If you now … Continue reading Run Pester tests in PowerShell ISE with IsePester

Use Pester to author your PowerShell scripts

Pester is a great module for testing your PowerShell scripts and modules. It has great mocking support, a test drive for setting up isolated files and supports a lot of assertions. Since the importance of PowerShell growths, testing your scripts is a must.

This is part 2 of the series “Develop next level PowerShell with Visual Studio and Pester”. It assumes that you have a Visual Studio solution with a basic Pester Test in GitHub.

Post Content
Part 1: Develop next level PowerShell with Visual Studio and Pester In this post I focus on creating the project in Visual Studio and interacting with a source control system like git.
Part 2: Use Pester to author your PowerShell scripts using TDD/BDD This post focuses on writing PowerShell scripts or modules using Pester as a TDD/BDD framework.
Part 3: Run your Pester tests in a VSTS build In this post I show you how you can run you tests in a continuous integration build and display the build status with a badge in your repository.

 

Pester basics

If you create a new test in Visual Studio, it looks like this:

Describe "PowerShellTest1" {
    Context "Exists" {
        It "Runs" {
        }
    }
}

As you can see you have three levels:

Describe: This is the name of the test displayed in test explorer. It is not ONE test in the test results. It’s more a container scope for many tests that executes as a unit.

Context: Like “Describe” the Context is a container for tests. You can mock functions or have test files in the scope of a context.

It: “It” is the actual test. You add an assertion here to test the state of your system. “It” is also a scope for mocking like context.

You can use these elements to structure your tests in a BDD style after the GivenWhenThen pattern.

$project = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace(".Tests", "")
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".tests.", ".")
. "$project\$sut"

Describe "AnswerToUltimateQuestion" {
    Context "Given an enormous supercomputer named Deep Thought, when we ask the ultimate question about life, the universe, and everything" {
        It "should return 42" {
			       AnswerToUltimateQuestion | Should Be 42
		     }
    }
}

Continue reading “Use Pester to author your PowerShell scripts”

Set assembly and app version to a matching build name in TFS 2015 or VSO Build.VNext

One of the most common customizations in TFS XAML build templates was to automatically update the assembly version number. This can also be done in build vNext using a small power shell script. I also added the option to apply … Continue reading Set assembly and app version to a matching build name in TFS 2015 or VSO Build.VNext

Don’t forget the NodeName in your DSC ConfigurationData

Today I created a new configuration data for a DSC configuration and got the following error: all elements of AllNodes need to be hashtable and has a property ‘NodeName’. The config looked good: AllNodes was a hashtable and it had the desired node name. So where was the error? I forgot one little thing: the global configuration needs a property NodeName set to an asterisk. Adding this fixed the error. This is really easy – but a search for the error message did not return any useful results. Therefor I decided to share it anyway… Continue reading Don’t forget the NodeName in your DSC ConfigurationData