himorogiの日記

主にプログラミングに関することなど。少々ハード(電子工作)についても。

macOS で Powershell - install 編

定年までの現役時代 Windows 端末しか使えず、でちょっと凝った(スマートな)処理をしようとすると、VBA を使うことになるのが嫌だった。
VBA も悪くはないけど、C 系の記法を一度経験した身には、少し野暮ったい。

そういうわけで、定年前の職場に移動直後( 10 年くらい前)は、WindowsScriptHost(WSH)でゴリゴリ書いてた。
Windows7 になってからは Powershell を利用して、バッチ処理走らせたり、コマンドやアプリケーションをフィルタ化してパイプで連携したりしてたので、つまり Powershell に馴染んでしまった。

定年後、macOS を好きなように弄れるようになったけど、(Javascript for Automation という手もあるけど)今更 AppleScript はまどろっこしい、
中途半端に覚えてる bash script (というか PerlRubyPython)よりも、Powershell 使いたいな…と思ってたら、macOS にも Powershell がやってきた。

macOS への PowerShell Core のインストール | Microsoft Docsdocs.microsoft.com

細かい手順は上記のリンク先を参照してもらうとして、私は既に Homebrew も Homebrew-Cask も install 済みなので、以下の手順で install できた。

brew cask install powershell

実は、既に macOSPowershell をインストール済み(MS から初めて公海されたとき、直ぐに入れた)なので、実際には upgrade を実行しただけである。

brew update
brew cask upgrade powershell

Homebrew、及び Homebrew-Cask は macOS に最初から入っているわけではないので、予め install しておく必要がある。
やり方は簡単なので、各自 Homebrew、Homebrew-Cask で検索し、手順を確認してほしい。

なお、terminal(私は VisualCode Studio 使ってる)から Powershell の起動するには pwsh をタイプする。

MacTheKnife:~ hoge$ pwsh
PowerShell 6.1.3
Copyright (c) Microsoft Corporation. All rights reserved.

https://aka.ms/pscore6-docs
Type 'help' to get help.

PS /Users/hoge> 

とりあえず get-executionpolicy 実行してみた

PS /Users/hoge> get-executionpolicy
Unrestricted
PS /Users/hoge> 

駄菓子菓子、set-executionpolicy は操作できないっぽい。PlatformNotSupportedException だってお。

PS /Users/hoge> set-executionpolicy restricted
set-executionpolicy : Operation is not supported on this platform.
At line:1 char:1
+ set-executionpolicy restricted
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [Set-ExecutionPolicy], PlatformNotSupportedException
+ FullyQualifiedErrorId : System.PlatformNotSupportedException,Microsoft.PowerShell.Commands.SetE
xecutionPolicyCommand
 
PS /Users/hoge> 

【2019/03/04 ここから追記】
PowerShell Core 6.0 の新機能 | Microsoft Docsdocs.microsoft.com
上記情報によると…

スクリプト エンジンは現在サポートされていないため、Windows 以外のプラットフォームで PowerShell を実行するときは -ExecutionPolicy スイッチを無視します。 (#3481)

【2019/03/04 追記終わり】

Powershell の中から JSC(JavaScriptCore)を呼び出してみた。
JSC は macOSbash で呼べる Javascript shell。
macOS には標準で入ってる(多分 /System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc)ので、スクリプトファイルなら shebang 書けば直ちに実行できるはず。
対話的(REPL)に使いたいなら JSC への path を通しておく。
まぁ、今なら JSC より node.js なんだろうけど、それを言ったら macOS 環境に Powershell (しかもまだ移植が半端)入れる意味って…

PS /Users/hoge> jsc 
>>> print("Hello World!");
Hello World!
undefined
>>> quit();
PS /Users/hoge>