はじめに
Linux等のサーバをリモートで操作する際に重要なのは、シェル環境ですよね?
私もbashを愛用しておりますが、たまにCシェル系のサーバに入ると、戸惑うことも多々あります。
Windowsサーバ環境では、PowerShellを利用される方も見かけるようになってきました。
PowerShellを利用されてる方は、Linux上で利用することで、慣れたシェル環境を手に入れることができるかと思います。
そこで、Linux上で動くPowerShellが発表されたので、さっそくインストールと動作確認を
GMOクラウドALTUSで行いたいと思います。
準備
まず、インストールする環境を用意しました。
シェルですので、小さい環境でも十分動いてくれることを期待して、Mini Serverを用意しました。
OSは、CentOS7とします。
ハイパーバイザ XenServer
テンプレート CentOS 7.1.1503 64bit_20160223
仮想サーバー Mini Server
PowerShell for Linuxは、gitでrpmとして提供されていますので、事前にファイルをサーバにダウンロードしておきます。
PowerShell - git
https://github.com/PowerShell/PowerShell
PowerShell - CentOS7 rpm
https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-alpha.9/powershell-6.0.0_alpha.9-1.el7.centos.x86_64.rpm
[2016/9/13現在]
インストール
rpmをインストールするだけなので、手間が省けて助かります。
URLから直接インストールする場合は、このように
# yum install https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-alpha.9/powershell-6.0.0_alpha.9-1.el7.centos.x86_64.rpm
Dependencies Resolved
===================================================================================================================================================================================================================
Package Arch Version Repository Size
===================================================================================================================================================================================================================
Installing:
powershell x86_64 6.0.0_alpha.9-1 /powershell-6.0.0_alpha.9-1.el7.centos.x86_64 121 M
Installing for dependencies:
libicu x86_64 50.1.2-15.el7 base 6.9 M
libunwind x86_64 2:1.1-5.el7_2.2 updates 56 k
Transaction Summary
===================================================================================================================================================================================================================
Install 1 Package (+2 Dependent packages)
Mini Serverで直接URLからインストールして、3分前後でした。
シェルの起動
インストール後、powershellのコマンドが用意され、コマンドを実行するとすぐにシェルが起動します。
# powershell
PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.
PS /root>
動作確認
PowerShell独自のコマンドを入力して動作確認してみました。
Linux環境下のため、コマンドの大文字、小文字の区別なく動作するようです。
PS /root> Get-Process | Select-Object -first 5
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
0 0 0 2 0.010 4922 642 abrt-dbus
0 0 0 1 0.000 658 658 abrt-watch-log
0 0 0 1 0.010 632 632 abrtd
0 0 0 0 0.000 669 669 agetty
0 0 0 0 0.000 670 670 agetty
PS /root> get-process | select-object -first 5
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
0 0 0 2 0.010 4922 642 abrt-dbus
0 0 0 1 0.000 658 658 abrt-watch-log
0 0 0 1 0.010 632 632 abrtd
0 0 0 0 0.000 669 669 agetty
0 0 0 0 0.000 670 670 agetty
スクリプトの動作確認
スクリプトが動作するか検証してみます。
Microsoft社のスクリプトセンターには、さまざまなスクリプトが公開されていますので、
その中のカレンダー表示するスクリプトが動くか検証してみます。
カレンダースクリプト - マイクロソフトスクリプトセンター
https://gallery.technet.microsoft.com/scriptcenter/753c225a-aba3-4092-be76-903348dacd97
スクリプトの内容は、割愛しますが、
直接関数を呼び出せるようにするためglobal修飾子を記載します。
変更前
function Show-Calendar
{
変更後
function global:Show-Calendar
{
ファイルを保存後、ファイル設置ディレクトリにて実行すると、下記のように無事動作しました。
PS /root> ./Show-Calendar.ps1
PS /root> ./Show-Calendar
2016/9
Sun Mon Tue Wed Thu Fri Sat
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
PS /root> ./Show-Calendar 2020 3
2020/3
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
利用できないコマンド
一部のコマンドは、利用できないようです。
特にSet-ExecutionPolicyのように権限を設定するようなものは、サポートされないみたいです。
PS /root> Set-ExecutionPolicy Unrestricted
Set-ExecutionPolicy : Operation is not supported on this platform.
At line:1 char:1
+ Set-ExecutionPolicy Unrestricted
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Set-ExecutionPolicy], PlatformNotSupportedException
+ FullyQualifiedErrorId : System.PlatformNotSupportedException,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand
まとめ
私自身は、PowerShellをほとんど利用したことがないですが、だいぶリッチなシェル環境です。
α版であり、Linux版であるので使い勝手は、Windows版のようにいかないようですが、
Windowsサーバを管理してる方は、Linuxサーバの運用にもノウハウが利用できそうです。
また、Windowsサーバの管理する予習としても、利用できそうですね。