🛠️

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