からめもぶろぐ。

SharePoint が得意なフレンズなんだね!すごーい!

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

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

MyGet への参照の追加

PowerShell Core のライブラリはまだ NuGet には展開されておらず、MyGet から入手する必要があります。そこで [ツール] - [オプション] - [NuGet パッケージ マネージャー] - [パッケージ ソース] に https://powershell.myget.org/F/powershell-core/api/v3/index.json を追加します。


プロジェクトの作成

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


NuGet パッケージの追加

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

  • 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'. 指定されたファイルが見つかりません。'