🛠️
PowerShell Core に対応したモジュール開発環境を作ってみる
はじめに
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