こんにちは。sinyです。
仕事柄Windowsサーバを扱うことが頻繁にあるのですが、特にWindowsサーバ管理者に取ってPowerShellを扱えることは必須スキルだと思っています。
今や、PowershellはWindowsだけでなくあらゆるプラットフォーム上で利用可能なオープンソースとなっています。
ひと昔前は、Windowsサーバでのバッチ処理といえば「DOSバッチ」か「VBA」で作るのが通常だったと思いますが、如何せんバッチの機能が貧弱すぎ・・・
実行結果をいったんテキストに吐き出して、吐き出したテキストの文字列をfindしてエラー判定するみたいな泥臭い処理をひたすら上から書いていくみたいな感じでしたね。
PowerShellは従来のバッチとは大きく違い、オブジェクト指向になっていて多くの標準機能も備わっているため、ほんとにプログラム言語に近い形でいろんなことが簡単に実装できるようになっています。
まだまだ勉強中ですが、「まだPowerShellやったことがない!」という方に向けてPowerShellに関するノウハウを公開していきたいと思います。
まずは初回ということで、「これからPowerShellを使ってみたい!」という方に向けてその概要と「こんなに便利ですよ~」という事例を簡単にご紹介したいと思います。
WindowsPowerShellの概要
WindowsPowershellは、WindowsOS用の新しいコマンドラインシェルで、OSを詳細に制御することができます。
.NETFrameworkと統合されているので、.NETFrameworkのオブジェクトを操作できたり、
WindowsScriptHost(WSH)スクリプトを扱うことができます。
ちなみに、Pythonをインストールしている環境であれば、以下のようにPowershell画面で「python」と入力するとPythonの実行環境が起動します。
また、Pythonコード内からPowershellのシェル(**.ps1)をCallして実行結果を受け取ることもできるので非常に便利です。
最近はPythonとPowershell、Djangoを組み合わせたシステム開発等に取り組んでいます。
PythonとPowershell連携についてはまた別記事で紹介したいと思います。
PowerShellの特徴
PowerShellの特徴として、以前のバッチやWSHと比べて決定的に違うのが処理結果を
「オブジェクト」として扱えるという点につきると思っています。
上図の通り、Powershellでは実行結果をオブジェクトとして扱えるので非常に便利です。
例えばこんな感じ。
これは、WindowsPCのドライブ情報を取得している例ですが、処理結果を$diskinfo変数に
一旦格納した後に、[変数名.オブジェクト名]という形でほしい情報にアクセスしている例です。
これまでのバッチとは違ってオブジェクト指向になっているので、複雑な処理を簡単に実装できるのがPowerShellの良いところですね。
例えば上記の例を応用すると、何十、何百とあるWindowsサーバのディスク情報を一括で取得して以下のようなExcelファイルを自動生成することができちゃいます。
以前のバッチ処理ではできないようなことが比較的簡単に実現できてしまうのがPowershellの威力ですね。
最初にも出てきましたが、PowershellはPythonから呼び出せるので、Django等のWEBフレームワークとの組み合わせにより全自動でサーバ情報を自動収集して情報を一元管理するようなWEBシステムを構築することができます。
PowerShellのサポート環境
以前はWindowsだけしか使えなかったPowerShellですが、今や様々なプラットフォーム下において利用することができるようになっています。
改めて確認したところ、もうほとんどすべての環境で利用できるようになっているようですね・・・
まだWindowsでしか使ってませんが、これからパブリッククラウドの利用もどんどん進んでいくと思うので、OSの種類を問わず、AWSなどのクラウド側のサーバ情報なんかも一括で情報取得して内部で一元管理するなんてこともできるんじゃないかな~と思っています。
Supported Platform | Downloads (stable) | Downloads (preview) | How to Install |
---|---|---|---|
Windows (x64) | .msi | .msi | Instructions |
Windows (x86) | .msi | .msi | Instructions |
Ubuntu 18.04 | .deb | .deb | Instructions |
Ubuntu 16.04 | .deb | .deb | Instructions |
Ubuntu 14.04 | .deb | .deb | Instructions |
Debian 8.7+ | .deb | .deb | Instructions |
Debian 9 | .deb | .deb | Instructions |
CentOS 7 | .rpm | .rpm | Instructions |
Red Hat Enterprise Linux 7 | .rpm | .rpm | Instructions |
OpenSUSE 42.2 | .rpm | .rpm | Instructions |
Fedora 27, Fedora 28 | .rpm | .rpm | Instructions |
macOS 10.12+ | .pkg | .pkg | Instructions |
Docker | Instructions |
お勧めの書籍
最後にPowershell入門者におすすめの書籍を紹介します。
まず1冊目はこちら。
私も所持していますが、Powershellの基本から始まり、Windowsサーバの情報をPowershellで管理するための基礎的な説明が全体的に網羅されていて、目的別に参照することもできるのでお勧めです。
・ディスクの情報を自動管理したい
・ActiveDirectoryのユーザ情報を自動管理したい
・サーバの情報を自動管理したい
と言った場合に、必要な章のページを見て基本的な知識を確認しつつ実装してみるという感じで使えると思います。
2冊目はこちら。
おそらく発売されているPowershell関連書籍では最新だと思います。
PowerShell 6.0に対応していて以下のような方を対象とした書籍になっています。
・システム管理者としてPowerShell使っていく、使いこなしたい方
・開発者からみてPowerShellをどう使うか気になる方
本書籍の詳細については以下の記事でも公開されています。
http://tech.guitarrapc.com/entry/2018/05/08/144132
個人的にはPowershellをもっと使いこなしていきたいので、この辺の書籍も購入してノウハウを身に着けていきたいと考えています。
次回は、Powershellの活用事例ついての記事を更新したいと思います。
※この記事が良かったと思う方はTwitterフォロー(shiny)とリツイート頂けると嬉しいです!