PowerShellのライブラリとか

昔に仕事でPowerShell使って画像処理してたのですが、エンジン部分をC#で書いたPowerShellの画像処理スクリプトが、C++ネイティブのバイナリよりも実行速度が速い!ということがありました。きちんと実行時間を計測したわけではないのですが、体感でも感じるほどの差ですから、充分実用に耐え得るでしょう。

隔離された環境で、開発環境がない(持ち込めない)PCでの作業のため、場合によってその場でテキストエディタを使ってスクリプトを修正して即実行ということができるので大変助かりました。

また、テキストデータを既存のExcelに出力することが比較的簡単にできるなど、PowerShellには色々とメリットがあります。私はプライベートではLinuxを使っているのですが、バックグラウンドで日々シェルスクリプトが働いています。自動化にはシェルスクリプトが欠かせないと思っています。

みんなもっとPowerShellを使えばいいのに。

というわけで、PowerShellの簡単なツールやライブラリがあると便利だと思っているのですが、なかなか見当たらない。仕事でいちいち一から作るのも効率が悪い、などなどありまして私的なツール群のようなものを作って、仕事でも使おうと思い始めて幾星霜…

第一歩として、現状のPowerShell(及び.Net)について調べるところから始めます。

開発環境もオープンソースであれば、仕事場でも簡単な改修ができますね。ということで流行りのVSCodeをターゲットに。

PowerShell 開発のための Visual Studio Code の使用
https://docs.microsoft.com/ja-jp/powershell/scripting/dev-cross-plat/vscode/using-vscode?view=powershell-7.2

次の PowerShell バージョンがサポートされています。
PowerShell 7.0 以降 (Windows、macOS、Linux)
Windows PowerShell 5.1 (Windows のみ)

とのこと、
ではWindows11 でデフォルトにインストールされているバージョンを見てみると

$PSVersionTable
Name Value
---- -----
PSVersion 5.1.22000.282
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
BuildVersion 10.0.22000.282
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1

なるほど、Windows PowerShell 5.1 (.Net Core)なんですね。
ちなみにPowerShell 7.2 は.Net 6らしい。

PowerShell 7.2 was released together with .NET 6.0 and is available for Linux, Windows, Mac, and in a Docker container format.

https://en.wikipedia.org/wiki/PowerShell

今使ってるMonoのアプリもいずれは.Netに移行したいので、.Net 6をインストールして、PowerShell 7.2から始めるのがよさそうです。
しばらくは5.1と7.2の差異がない範囲でできたらいいなぁ。