PsSmo

The PowerShell SQL Client module replaces the SQL Server utilities SQLCMD with native PowerShell commands.

Installation

This module can be installed from PsGallery.

Install-Module -Name PsSmo -Scope CurrentUser

Alternatively it can be build and installed from source.

  1. Install the development dependencies
  2. Download or clone it from GitHub
  3. Run the installation task:
Invoke-Build Install

Usage

TODO

Execute SQLCMD scripts like those created by DacFX.

Commands

Command Description Status
Connect-Instance Create a new database connection.
Disconnect-Instance Close connection
Invoke-Command Execute SQLCMD scripts
⮱ Batch support Support GO statements
⮱ File support Script source from file
⮱ Variable support Support variables like $(variable)
⮱ :setvar support Support :setvar
⮱ SQLCMD command support Support SQLCMD commans like :on error
Uninstall-Schema Remove a database schema recursively

Changelog

See the changelog file.

Development

Status

.github/workflows/build-validation.yml

Build

The build scripts require InvokeBuild. If it is not installed, install it with the command Install-Module InvokeBuild -Scope CurrentUser.

You can build the module using the VS Code build task or with the command Invoke-Build Build.

Testing

The tests scripts are based on Pester. If it is not installed, install it with the command Install-Module -Name Pester -Force -SkipPublisherCheck. Some tests require a SQL Server. The test creates a SQL Server in a Docker container. If needed, install Docker. The container are created using PSDocker, which can be installed using Install-Module PSDocker -Scope CurrentUser.

For local testing use the VSCode test tasks or execute the test scripts directly or with Invoke-Pester. The InvokeBuild test tasks are for CI and do not generate console output.

Release

  1. Create a release branch using git-flow.
  2. Update the version number in the module manifest.
  3. Extend the changelog in this readme.
  4. If you want to create a pre-release.
    1. Push the release branch to github, to publish the pre-release to PsGallery.
  5. Finish release using git-flow.
  6. Check if tags are not pushed to github.
  7. Check if the release branch is deleted on github.
  8. Create the release on github.