メインコンテンツまでスキップ

PowerShell スクリプト開発環境の構築

· 約3分
ks6088ts

PowerShell スクリプト開発環境の構築にあたり、便利なツールや環境を紹介します。

PowerShell 開発環境の構築

エディタ

Syntax highlighting、インテリセンスなどを有効にするため、PowerShell for Visual Studio Codeをインストールして VS Code 上で開発します。

ドキュメント

基本的には、PowerShell Documentationの公式情報を参照します。 具体的な文法や使い方に関してサンプルコードを見たい場合は、~について知りたかったことのすべてを参照すると良いです。 PowerShell スクリプト開発のベストプラクティスを知りたい場合は、PowerShell Best Practices and Style Guide が参考になります。

Code snippets

個人的によく使うスニペット集を作成して、コード資産を使いまわすと効率的です。 細かい文法などは触っていないと忘れがちなので、よく使うスニペットは使いまわせるようにしておくとよいでしょう。

Install PowerShell modules
#!/usr/bin/env pwsh

Write-Host "Running "$MyInvocation.MyCommand.Name" ..."

Set-PSRepository -Name 'PSGallery' -InstallationPolicy Trusted

$modules = @(
"Microsoft.Graph"
"Pester"
)

foreach ($module in $modules) {
Write-Host "Installing $module"
Install-Module -Name $module -Scope CurrentUser
}
PowerShell module: mymodule.psm1
# mymodule のバージョン
$global:MyModuleVersion = "v0.0.1"

function Initialize-MyModule {
# do something
}

Export-ModuleMember -Variable MyModuleVersion
Export-ModuleMember -Function Initialize-MyModule
PowerShell script: client.test.ps1
# unit test by Pester
using module "./mymodule.psm1"

Describe "Smoke test" {
Context "Nominal case" {
It "Check global variables" {
# version variable settings
$MyModuleVersion | Should Be "v0.0.1"
}
}
}

静的解析

PowerShell/PSScriptAnalyzerをインストールします。

Install-Module -Name PSScriptAnalyzer -Scope CurrentUser

使い方は PSScriptAnalyzerを使ってPowerShellのコードをキレイに保とうを参照します。

テスト

ユニットテストフレームワークとしてPester / Quick Startを使います。

Install-Module -Name Pester -Scope CurrentUser

Docker

PowerShell スクリプトの再現性担保のために、Docker コンテナ上で開発したい場合、ベースとなるコンテナイメージは mcr.microsoft.com/powershell にあります。必要な tag を指定して利用してください。 特に、PowerShell module が廃止になる場合、その module の依存を剥がす開発をする場合などで重宝しました。