「PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説」 という書籍が発売され、最近時間を見つけては読み進めていました。
正誤表はこちら。
『PowerShell実践ガイドブック』サポートページ
PowerShell の情報を探していると、高確率でヒットする、tech.guitarrapc.com の ぎたぱそせんせー が書かれ、ちまたでは #貝殻本 と呼ばれている書籍です。
書籍の内容をきちんと理解できたというレベルには至っていませんが、最後までパラパラと読むことができたので、感想などをポチポチ書いてみたいと思います。
■電子書籍版について
ページ数が 624 ページと大ボリュームですので、移動中に読みたい場合には、紙の書籍ではなく電子書籍を買うという選択肢もあります。
- PDF : マイナビ BOOKS
- Kindle : amazon
私の場合、毎日作業場所が同じではなく、移動が多いので移動中に読めるように Kindle 版を購入したのですが、Kindle 版は「固定レイアウト型の書籍」となっており、の構成が、「章見出し」での構成となっていますのでこの辺は買う前に意識しておいた方がよいかもしれないですね。
Kindle 書籍の目次の移動が「第1章」「第2章」… というような、大きな章での括りとなっており、その章の中の、サブ見出しには目次からは移動することができません。
Kindle Paper White のような端末であれば、読み進めながら「ブックマーク」の機能を使用して、頻繁に参照するページに直接移動するように、栞を挟んでいくことができます。
しかし、現状の Kindle for PC については、「固定レイアウト」の電子書籍に対して、ブックマークは設定できるようですが、ブックマークの移動を行うことができないようでした。
(できるようでしたらコメントで方法を教えていただけると助かります m(_ _)m)
また、Kindle 版の電子書籍では、巻頭の目次や、最後の Index から各ページに直接ジャンプするということもできませんでした。
本書はとてもボリュームがあり、「日常的にリファレンス的な使い方をしたい」場合は、紙の書籍の方が利便性が高いかもしれないですね。
第2章の Windows PowerShell と PowerShell Core の違いについて記載されている段落に移動したいといった場合、電子書籍ですと、一度読み終わった後に目的の情報に移動するのがちょっと大変かもです。
■本書の感想
一言でいうと、とにかく内容が盛りだくさんで、自分にとってはディープと感じる内容も多かったです。
私の場合、Windows Server 2003 の頃の PowerShell 1.0 の時代は、業務用のスクリプトは、Windows Scripting Host (WSH) で書く機会の方が圧倒的に多く、PowerShell をきちんと使いだしたのは、Windows 7 で、PowerShell 2.0 + PowerShell ISE の組み合わせだったかと。
WSH はテキストエディタでポチポチと書いていたので、「OS 標準で ISE が搭載され、業務で使用するスクリプトを Windows インストール直後の状態で、IDE 使いながらスクリプト開発出来て便利だな」というのが、最初の感想でした。
追加ソフトのインストールをする際の申請が面倒なことが多い現場もあったりしたので、OS 標準でこの環境が使えるのがうれしかったですね。
そんな
- Windows PoweShell + PowerShell ISE
の組み合わせから、
- PowerShell 6.0 (PowerShell Core) + Visual Studio COde
という、最新の組み合わせで、スクリプト開発を行う際の様々なノウハウが本書籍で紹介されています。
PowerShell 6.0 だけでなく、Windows で動作する、従来型の Windows PowerShell でも共通して使用できる内容もとても多く、「PowerShell」を学習するためにも使用できますので、PowerShell Core でなく、Windows PowerShell を使用する場合でも、とても勉強になります。
PowerShell を使用したスクリプティングの知識を得ることを目的とし、PowerShell が苦手としているところについても正直に記載があり「実施したいこと (目的) を満たすのであれば、他のコマンドや言語を使うことを考えてもよいのでは」という記載があるのも、本書の面白いところではないでしょうか。
PowerShell の学習を使用と思う方は、
- これから PowerShell を始めようと思った
- 既に Windows PowerShell を使用しており、最新の PowerShell Core の情報や、Windows PowerShell と PowerShell 6.0 の違いをキャッチアップしたい
- クロスプラットフォームに対応した PowerShell では Windows 以外の OS ではどのようなことができるのか
- 他の言語でのスクリプティングは実施したことがあり、クロスプラットフォームに対応した PowerShell だと、どういうことができるのかを学習したい
- 実際の業務で使用する PowerShell のスクリプトを開発する際に考慮する必要のある内容や書き方を学習したい
- 「Windows / Server の ~操作」を PowerShell で実装するためにはどうすればよいか
というような様々なバックボーンがあるかと。
本書籍は「1.~5.」を学習するのに適しているのではないでしょうか。
- 1 章で、各プラットフォームの PowerShell 6.0 のインストール / Visual Studio Code を使用した PowerShell のスクリプト開発の基本操作 / サンプルを使用した PowerShell のスクリプトの実行を学習
- 2 章で、PowerShell の基本的な構文 / 動作 / パラメーターの理解
- 3 章で、PowerShell を使用したロギング / リモート操作 / ジョブを使用したバックグラウンド実行といった管理操作で使用する操作の理解
- 4 章で、PowerShell でスクリプト開発をする際に使用する各種構文やオブジェクト作成、PowerShell で利用できるクラス構文の理解
- 5章で、著者が実践で取得されたノウハウを吸収し、クラウドプラットフォームを PowerShell で管理するためのファーストステップも学習する
本書を読むことでこのようなことが理解できるかと。
他にも、コマンドプロンプト , bash, Windows PowerShell で書いた場合との違い、Windows PowerShell のモジュールを PowerShell 6.0 のモジュールに追加する方法 / クロスプラットフォームでのリモート操作、といった自分が使い慣れている環境と比較をしながら学習することもできるようになっています。
.NET Core 相互運用についても触れられているので、自分としてはこの辺も勉強になりました。
インストールや実行方法から丁寧に記載されていますので、「これから PowerShell を始めようと思った方」にも適した書籍ですが、パラメーターやパイプラインの解説などで、(私にとっては) かなり詳細な内容にも触れられています。
「少し理解が追い付かないな…」と思った場合、あまりその内容の理解に固執せず、「こういう考え方なんだな」というような緩い感覚で読み進めるとよいのではないでしょうか。
本書を、最後まで読みすすめ「業務で使用するスクリプトの開発をするために必要となる各種ノウハウについて用語」が、頭の中に入っている状態にすることは、今後の強みにもつながり、「実務で利用を始める」と「なるほど、書籍のこの内容はこういうことだったのか」と「ふと思い当たる」ことが多くなってくるような内容が含まれていますので、その時に読み返せるように「この情報ここにあったな」と思い返せるのが重要かと思いますので。
私の場合、
- 業務でスクリプト開発をした経験があるが、雰囲気で PowerShell を使っている
- SQL Server on Linux で Linux を触りだし、クロスプラットフォーム対応のスクリプティングに興味が湧いてきた
- 以前、KShell でのスクリプティング経験がある
というような感じで、「パイプラインって、オブジェクトが流れるんだよね」「このパラメーターの意味、こういう感じかな」というような、雰囲気で使っていた派なのですが、本書を読んで、「なるほど、この動作はこういう意味だったのか」とかなり理解が深まった気がしますし、「自分も使っていて、こんなことあったな」というような共感もありました。
本書の Foreach-Object の内容を読んだことで、「なるほど、このように動作するなら、一定の間隔で SQL Server に対して実行したクエリの内容を Out-GridView に流して簡易のモニタリングを実現できるのでは?」と思い、PowerShell Core ではないのですが、Windows PowerShell に対して、次のような記載で応用をすることもできたりしました。
12341..100 | %{
Invoke-Sqlcmd
-ServerInstance
.
-Query
"SELECT GETDATE() AS [date], @@SERVERNAME AS [ServerName]"
Start-Sleep
-Seconds
5
} |
Out-GridView
実際に書いてみるととても単純な内容なのですが、これ、自分にとってはかなり利便性が高く、インパクトは大きかったのですよね。
このように、既に PowerShell を使っていた方についても、理解を深めることで応用できる幅が増えるのではないでしょうか。
本書の冒頭でも触れられていますが、「6.」のような、Windows のクライアントやサーバーを操作 / 管理するために「特定の処理を実装するための情報として利用したい」という情報については説明されていません。
実装したい処理が明確化されている場合、本書で「実際に運用で使用するスクリプト開発」の部分を学習し、「Windows PowerShell実践システム管理ガイド」「Windows PowerShell ポケットリファレンス」といった書籍で「特定の処理を実装するための方法」を学習するといった、合わせ技で検討すると良いかと。
個人的にグッと来たのは、P.462 に書かれていた「開発者から見たモジュールのメリット」の冒頭に書かれている内容だったりします。
PowerShell の利用者は、インフラの管理者が多いのではと思っています。
私も、そういう「インフラの管理者」スキルセットではあるのですが、ここに記載されている内容は、インフラ管理者の意識をモダナイズする重要な考えだなという気がしています。
最近、PowerShell を使っていなかったのと、一部流して読んでしまったところもあり、まだまだ理解が足りていない内容もかなりあるので、再学習が必要なところが多々残っているのですが、PowerShell のスキルを深めるのに本書の内容はとても勉強になりました!!