🛠️

PowerShell Core に対応したモジュール開発環境を作ってみる

2022/01/01に公開

はじめに

PowerShell Core が 6.0.0-beta になり .NET Core 2.0 に対応しました。いよいよ PowerShell Core も本格的になってきたので Visual Studio で PowerShell Core なモジュールを作成するための手順をまとめました。

実行手順

MyGet への参照の追加

PowerShell Core のライブラリはまだ NuGet には展開されておらず、MyGet から入手する必要があります。そこで ツール - オプション - NuGet パッケージ マネージャー - パッケージ ソース に URL を追加します。

https://powershell.myget.org/F/powershell-core/api/v3/index.json

プロジェクトの作成

新しいプロジェクト のプロジェクトの種類で クラス ライブラリ (.NET Core) を選択します。単体テスト プロジェクトを作成する場合は 単体テスト プロジェクト (.NET Core) を選択します。

NuGet パッケージの追加

NuGet パッケージの管理 を開くと パッケージ ソース で MyGet を選択できるようになり、PowerShell Core のライブラリを追加できます。モジュール本体には System.Management.Automation を追加します。単体テスト プロジェクトは Runspace を作成してテストすることになるので、合わせて以下のパッケージも追加します。

  • Microsoft.PowerShell.SDK
  • Microsoft.PowerShell.Commands.Diagnostics
  • Microsoft.PowerShell.Commands.Management
  • Microsoft.PowerShell.Commands.Utility
  • Microsoft.PowerShell.ConsoleHost
  • Microsoft.WSMan.Management
  • Microsoft.WSMan.Runtime

追加するパッケージが足りないと Runspace を作ったときにエラーが発生します。

System.Management.Automation.Runspaces.PSSnapInException: 'Cannot load Windows PowerShell snap-in Microsoft.PowerShell.Diagnostics because of the following error: Could not load file or assembly 'C:\Users\...\Documents\Visual Studio 2017\Projects\Module1.Tests\bin\Debug\netcoreapp2.0\Microsoft.PowerShell.Commands'. 指定されたファイルが見つかりません。'

Discussion