クロスプラットフォーム対応したPowerShellをMac OS Xで試してみた

2016.08.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ども、大瀧です。
先日PowerShellのLinux対応とオープンソース化がアナウンスされました。

記事のタイトルはLinux対応なのですが、こっそりMac OS Xにも対応していたので、試してみた様子をレポートします。

動作確認した環境

  • OS : OS X El Capitan
  • PowerShell : バージョン v6.0.0-alpha.9

インストールと実行

現在はアルファ版で、GitHubにリポジトリがあります。ドキュメントに従い、バイナリをダウンロードしてインストールします。

$ sudo installer -pkg powershell-6.0.0-alpha.9.pkg -target /
Password:
installer: Package name is powershell-6.0.0-alpha.9
installer: Installing at base path /
installer: The install was successful.
$

これでOKです。/usr/local/bin/powershellにシンボリックリンクが張られるので、いきなり実行できます。

$ powershell
PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS /Users/ryuta>

普通に入力補完が効くので、Get-コマンドレットの一覧を見てみましょう。

ps-osx01

PowerShellのコア機能のコマンドレットに限られ、システム管理系コマンドレットはまだ無いようですね。PowerShellからOS Xのシステム設定を変更しようとは今のところ思っていないので(笑)、特に気にはなりませんでした。

あと、モジュールや実行ポリシーなど実行環境周りをチェック。

PS /Users/ryuta> Get-Module

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   3.1.0.0    Microsoft.PowerShell.Management     {Add-Content, Clear-Content, Clear-Item, Clear-ItemProperty...}
Manifest   3.1.0.0    Microsoft.PowerShell.Utility        {Add-Member, Add-Type, Clear-Variable, Compare-Object...}
Script     1.2        PSReadLine                          {Get-PSReadlineKeyHandler, Get-PSReadlineOption, Remove-PSReadlineKeyHan...

PS /Users/ryuta> Get-ExecutionPolicy
Unrestricted
PS /Users/ryuta> Get-Host

Name             : ConsoleHost
Version          : 6.0.0
InstanceId       : 08ce74f4-c0f3-4569-a74e-24b88df79fbd
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : ja-JP
CurrentUICulture : ja-JP
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled  : True
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

PS /Users/ryuta>

普通に動く感じですね。

スクリプトファイルとしての実行

インタプリタとしてPowerShellを使うのであれば、シェルスクリプトと同じような感覚で使いたいものです。ということで、Bashから呼び出すスクリプトファイルを作成し、試してみます。

test.ps1

#!/usr/local/bin/powershell -File
Write-Host 'test!!'

で、これに実行権を付けて実行してみます。

$ chmod +x test.ps1
$ ./test.ps1
test!!
$

あっさり動きましたね。手軽にPowerShellを利用する方法として便利な気がします。

まとめ

クロスプラットフォームに対応したPowerShellのOS X版を試してみました。 皆さんの本命はLinux対応だと思いますが、個人的にはスクリプトをPowerShellで組んで手元のMacbookで実行するのもかなり便利かなと期待しています。 AWSのPowerShellクライアントであるAWS Tools for PowerShellもクロスプラットフォーム版PowerShellに対応予定らしいので、こちらも合わせてウォッチしたいと思います。