-
-
Notifications
You must be signed in to change notification settings - Fork 146
Home
This wiki is currently dedicated to dbachecks development.
Below you will find a great example of our development standards
Describe "Linked Servers" -Tags LinkedServerConnection, Connectivity, $filename {
(Get-SqlInstance).ForEach{
Context "Testing Linked Servers on $psitem" {
(Test-DbaLinkedServerConnection -SqlInstance $psitem).ForEach{
It "Linked Server $($psitem.LinkedServerName) has connectivity" {
$psitem.Connectivity | Should be $true
}
}
}
}
}
- The parameter
-Tagsis pluralized - The whole line uses double quotes, which helps with our parsing for
Get-DbcCheck - Actual tags are singular
- The first Tag is unique, thereby "naming" the test
LinkedServerConnection - The unique tag shows up as a unique tag in
Get-DbcCheck - Context mentions the instance or computer name ($psitem)

- The internal command
Get-SqlInstanceorGet-ComputerNameis used - The ForEach method is used (PS4+)
-
$psitemis used in lieu of$_
Every Describe should have at least one Context that mentions the $psitem
This module relies on PSFramework for its infrastructure including the config system. The config system is mostly for end-user preferences, such as setting a static list of servers or skipping (internal) tests.
Users can skip entire tests by specifying the -ExcludeTag. Each test is automatically tagged with its file name (backups.Tests.ps1 -> backups).
Check out configuration.ps1

Each configuration must be "initialized" in this file and then any changes are persisted once the user executes Set-DbaConfig
Pester tags, like PowerShell command names and parameter names, are singular. Each command can have multiple tags such as Database, Restore and then the filename will also be attached as well.
Checks are located in the checks folder. Please ask if you need to add a new file, which is essentially a new Group or Category.
Auto-complete is provided by PSFramework. You can edit autocmplete.ps1 as required.
