PowerCLI – PowerShell on Mac
祝 !! OSS 化。
PowerShell が OSS 化され Linux や Mac でも動くようになったので、早速試してみます。
手順
大まかな流れは以下になります。
- openssl を homebrew で導入。必要なシンボリック リンクを作成。
- Mac 向けの dotnet core をインストール
- dotnet core の動作確認
- PowerShell のインストール
- PowerShell の動作確認
OpenSSL を Homebrew で導入
すでに導入済みのため、本家のこちら から拝借。
$ brew update
$ brew install openssl
$ ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/
$ ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/
Mac 向けの dotnet core をインストール
バイナリも 上と同じページ にリンクがあるので、そちらから最新版を入手します。
pkg フォーマットなので、ダウンロード後、ダブルクリックし、ウィザードに従いインストールします。
dotnet core の動作確認
インストールされた dotnet core の動作確認をします。
dotnet core のお作法を知らないので 上と同じページ にあるコマンドを写経します。
[ ~/tmp/ ]
% mkdir hwapp
[ ~/tmp/ ]
% cd hwapp
[ ~/tmp/hwapp/ ]
% dotnet new
Created new C# project in /Users/user01/tmp/hwapp.
[ ~/tmp/hwapp/ ]
% dotnet restore
log : Restoring packages for /Users/user01/tmp/hwapp/project.json...
log : Writing lock file to disk. Path: /Users/user01/tmp/hwapp/project.lock.json
log : /Users/user01/tmp/hwapp/project.json
log : Restore completed in 1046ms.
[ ~/tmp/hwapp/ ]
% dotnet run
Project hwapp (.NETCoreApp,Version=v1.0) will be compiled because expected outputs are missing
Compiling hwapp for .NETCoreApp,Version=v1.0
Compilation succeeded.
0 Warning(s)
0 Error(s)
Time elapsed 00:00:01.5014416
Hello World!
[ ~/tmp/hwapp/ ]
%
と単純に終わりましたが、実は 2 点ほど嵌まっています。
嵌まったところ 1
普段 zsh を使っているのですが、dotnet core をインストール後、インストール前から起動済みのシェルで dotnet コマンドが command not found に。シェルの再起動で事なきを得ていますが、そういうもんだっけ…?
嵌まったところ 2
Hello World アプリを実行する際に、きちんと hwapp などのフォルダを掘ってそこでコマンドを実行すること。上の対応でシェルを再起動した際に、フォルダ移動し忘れてホームディレクトリで dotnet new から始まるコマンド実行したらあえなく玉砕に。
Garageband などのアプリ ファイルの一部が *.cs という拡張子のため、 dotnet restore の実行が長時間になり、dotnet run はエラーになります。
[ ~/ ]
% dotnet restore
log : Restoring packages for /Users/user01/project.json...
log : Writing lock file to disk. Path: /Users/user01/project.lock.json
log : /Users/user01/project.json
log : Restore completed in 917ms.
[ ~/ ]
% dotnet run
Project user01 (.NETCoreApp,Version=v1.0) will be compiled because expected outputs are missing
Compiling user01 for .NETCoreApp,Version=v1.0
/usr/local/share/dotnet/dotnet compile-csc @/Users/user01/obj/Debug/netcoreapp1.0/dotnet-compile.rsp returned Exit Code 1
/Users/user01/error CS2015: '/Users/user01/Library/Preferences/com.apple.logic.pro.cs' is a binary file instead of a text file
/Users/user01/error CS2015: '/Users/user01/Library/Containers/com.apple.garageband10/Data/Library/Preferences/com.apple.garageband10.cs' is a binary file instead of a text file
Compilation failed.
0 Warning(s)
2 Error(s)
Time elapsed 00:01:31.0792453
[ ~/ ]
%
PowerShell のインストール
PowerShell 6.0.0 alpha9 のパッケージを Github からダウンロードし、インストールします。pkg フォーマットなので dotnet core と同じくウィザードに従いインストールします。
PowerShell の動作確認
シェルを起動し直して PowerShell を実行します。powershell コマンドがインストールされ、$PSVersionTable は以下の出力となりました。
しかし、OSVersion はまだ実装されていないのかな ?
[ ~/ ]
% powershell
PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.
PS /Users/user01> $PSVersionTable
Name Value
---- -----
PSVersion 6.0.0-alpha
PSEdition Core
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 3.0.0.0
GitCommitId v6.0.0-alpha.9
CLRVersion
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
PS /Users/user01> [System.Environment]::OSVersion
OSVersion's call to GetVersionEx failed.
At line:1 char:1
+ [System.Environment]::OSVersion
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], InvalidOperationException
+ FullyQualifiedErrorId : System.InvalidOperationException
PS /Users/user01>
最近のマイクロソフト
Azure や OSS への傾倒など、CEO が変わってから (中の人はその前からと言われたりしますが) 随分様変わりしたなと思います。しかし、ソフトウェア ライセンスの売上がほとんどだった会社が OSS に傾倒、なによりもパートナー ビジネスを進めていた会社がクラウドに傾倒し、今後何が起きていくかは注視せざるを得ないと考えるところです。確たるE-コマース事業や広告事業がある Amazon と Google と違うところを上手くこなしていくのでしょうけども、その上手いこなし方の余波で埋没しないようエンジニア・勤め人として生き抜きたいと切に願います。