Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
PowerShell 10年間
ふりかえり
2016/12/17 CLR/H #103 ~ クリスマス オブ ザ デッド ~
素敵なおひげ
自己紹介
 素敵なおひげ
◦Twitter - @stknohg
◦Blog - http://stknohg.hatenablog.jp/
 何者?
◦ CLR/HとJAZUG札幌(きたあず)の裏方
◦Microsoft MVP
Clou...
祝!PowerShell 10周年
 PowerShell 10 Year Anniversary
◦ https://channel9.msdn.com/Events/PowerShell-Team/PowerShell-10-Year-A...
アジェンダ
1. PowerShell 10年間ふりかえり
2. これからのPowerShell
3. 誰のためのPowerShell
4
1. PowerShell 10年間
ふりかえり
5
PowerShellとは
6
PowerShellは、WindowsおよびWindows Server用の
自動化プラットフォームおよびスクリプト言語で、
システムの管理を簡素化できます。
他のテキストベースのシェルとは異なり、PowerShe...
PowerShellの歴史
2006/11/14
• PowerShell 1.0
リリース
2009/09/01
• PowerShell 2.0
を搭載した
Windows 7リリース
(RTMは2009/07)
2009/10/26
• ...
PowerShellの歴史
2012/09/01
• PowerShell 3.0
を搭載した
Windows 8リリース
(RTMは2012/08)
2012/09/06
• WMF 3.0
リリース
2013/10/18
• PowerSh...
PowerShellの歴史
2015/07/29
• PowerShell 5.0
を搭載した
Windows 10
リリース
2016/02/24
• WMF 5.0
最終リリース
(初回リリース
は2015/12)
2016/08/02
•...
PowerShellふりかえり
 対応OS
10
https://msdn.microsoft.com/en-us/powershell/wmf/5.1/compatibility より引用
PowerShellふりかえり
 コマンド数(Function, Cmdlet)の推移
11
163
366
1153
1346 1433
1644
0
200
400
600
800
1000
1200
1400
1600
1800
PS ...
PowerShellふりかえり
主要機能
• .NET Frameworkのオブジェクトを利用した型システム
• Extended Type System
• Adapted Type System
• オブジェクトパイプライン
• プロバイダ...
PowerShellふりかえり
言語機能
• 高度な関数
• 例外処理(Try-Catch)
• モジュール
• スプラッティング
基盤関連
• PowerShell Remoting
• バックグラウンドジョブ
• トランザクション
開発環境...
PowerShellふりかえり
言語機能
• 新しい演算子の追加 (ビットシフト、-in、-notin)
• 非配列オブジェクトに対するCountプロパティ
• ForEach-Object/Whre-Objectの簡易記法
基盤関連
• 実行...
PowerShellふりかえり
言語機能
• コレクションに対するWhere()、ForEach()メソッド
• Dynamic Method
• PipelineVariableパラメーター
基盤関連
• PowerShell Desired...
PowerShellふりかえり
言語機能
• Class構文の導入
• Enum構文の導入
基盤関連
• DSCの機能強化
• PackageManagement、PowerShellGet
• PSReadlineやPesterといったOSS...
PowerShellふりかえり
言語機能
• using moduleステートメントのバージョン指定
• ファイルリダイレクトの非ハードコード化
基盤関連
• Core Editionの登場(Nano Server向け)
• DSCの機能強化
...
独断と偏見による総括
PowerShell
1.0~3.0
• 機能強化の期間
PowerShell
4.0
• DSCによるプロビジョニングツールとしての進化
PowerShell
5.0
• PSReadlineやPesterなどのOSSを...
2. これからのPowerShell
19
PowerShell for every system!
20
PowerShell for every system!
 2016/08/18、突如
PowerShellがオープンソースに
 ソースはGitHubで公開
◦ https://github.com/PowerShell/PowerShel...
PowerShell 6.0
 OSS化したPowerShellのバージョンは6.0
◦ 現在はアルファ版
◦ 2016/12/17時点でAlpha 14
 機能に関してはCore EditionからWindows
に特化した部分を除外した...
PowerShell 6.0
 対応プラットフォームとエディション
 現在はCore Editionのみバイナリ配布
◦ デスクトップ版に関してどうなるかは不明
 マイルストーンおよびリリース時期は不明
23
プラットフォーム
Deskt...
これからのPowerShell
 コミュニティからのフィードバックを重視
1. GitHub上でのIssue管理
2. Gitter、Slack上のチャットルーム
3. PowerShell-RFC
◦ GitHubでRFCにより新機能を議論...
これからのPowerShell
 各ベンダー・サービスのCore Edition対応
1. Azure - AzureRM.NetCore.Preview (プレビュー版)
 https://www.powershellgallery.co...
独断と偏見による予測
1. 機能面
◦ 機能面ではPowerShellは成熟してきた
今後はセキュリティ面での強化が多くなる、かも?
◦ RFCも新機能より既存機能の改善案が多め
2. サーバー管理基盤としてのPowerShell
◦ マイルス...
3. 誰のためのPowerShell
27
28
ここから若干ポエム要素入ります
PowerShell for everyone?
PowerShellは万人向けなのか?
◦PowerShellはサーバー管理、自動化に
特化したツール
◦当初はシステム管理者向けのツールと
して提供されており、根本的な思想は
今も変わってい...
PowerShell for everyone?
◦ 得意領域(一例)
サーバー管理
◦ 豊富なコマンドレット
定型処理の自動化
◦ スクリプト言語としての
機能自体は多い
◦ 不得意領域(一例)
複雑なテキストデータの加工
◦ grep...
誰のためのPowerShell
私見
◦PowerShellは利用のための敷居は低いが
万人向けのツールではない
◦クロスプラットフォーム化したことにより、
より多くの人がPowerShellに触れること
になるが無理をしてまで使うものではな...
(補足)PowerShell と Bash
32
Bash on Ubuntu on Windows
◦ 現状Windows10のみ、開発者モード必須
◦ サーバーOSに載るかは不明
PowerShellはBash(*sh)ではない
◦ B...
(補足)PowerShell と コマンドプロンプト
33
 Windows 10 Insider Preview Build 14971で
PowerShellが既定のシェルになった件
◦ UI(Explorer)の変更だけでコマンドプロン...
参考資料
 Windows PowerShell - Wikipedia
◦ https://en.wikipedia.org/wiki/PowerShell
 PowerShell 3.0概要
◦ http://winscript.jp/...
35
Upcoming SlideShare
Loading in …5
×

PowerShell 10年間ふりかえり

2,791 views

Published on

2016/12/17 CLR/H #103 ~ クリスマス オブ ザ デッド ~のセッション資料です。

Published in: Technology
  • Be the first to comment

PowerShell 10年間ふりかえり

  1. 1. PowerShell 10年間 ふりかえり 2016/12/17 CLR/H #103 ~ クリスマス オブ ザ デッド ~ 素敵なおひげ
  2. 2. 自己紹介  素敵なおひげ ◦Twitter - @stknohg ◦Blog - http://stknohg.hatenablog.jp/  何者? ◦ CLR/HとJAZUG札幌(きたあず)の裏方 ◦Microsoft MVP Cloud and Datacanter Management (2016/07 - ) 2
  3. 3. 祝!PowerShell 10周年  PowerShell 10 Year Anniversary ◦ https://channel9.msdn.com/Events/PowerShell-Team/PowerShell-10-Year-Anniversary 3
  4. 4. アジェンダ 1. PowerShell 10年間ふりかえり 2. これからのPowerShell 3. 誰のためのPowerShell 4
  5. 5. 1. PowerShell 10年間 ふりかえり 5
  6. 6. PowerShellとは 6 PowerShellは、WindowsおよびWindows Server用の 自動化プラットフォームおよびスクリプト言語で、 システムの管理を簡素化できます。 他のテキストベースのシェルとは異なり、PowerShell は.NET Frameworkの機能を活用し、豊富なオブジェクト と、Windows環境を制御するための大量の組み込み 機能を提供します。 https://msdn.microsoft.com/en-us/powershell の記述より引用
  7. 7. PowerShellの歴史 2006/11/14 • PowerShell 1.0 リリース 2009/09/01 • PowerShell 2.0 を搭載した Windows 7リリース (RTMは2009/07) 2009/10/26 • Windows Management Framework (WMF) 2.0 リリース 7 PS1.0 PS2.0 • .NET Framework 2.0上で稼働 • 標準搭載のOSは無し • .NET Framework 2.0上で稼働 • Windows Management Frameworkに統合 ※OSのリリース日に関してはボリュームライセンス版のリリース日を基準としています
  8. 8. PowerShellの歴史 2012/09/01 • PowerShell 3.0 を搭載した Windows 8リリース (RTMは2012/08) 2012/09/06 • WMF 3.0 リリース 2013/10/18 • PowerShell 4.0を搭載した Windows 8.1/Windows Server 2012 R2 リリース 2013/10/24 • WMF 4.0 リリース 8 PS3.0 PS4.0 • .NET Framework 4上で稼働 * Dynamic Language Runtime(DLR)の採用 • 過去バージョンはside by sideで実行可能に • .NET Framework 4.5上で稼働 • Desire State Configuration(DSC)の登場 ※OSのリリース日に関してはボリュームライセンス版のリリース日を基準としています
  9. 9. PowerShellの歴史 2015/07/29 • PowerShell 5.0 を搭載した Windows 10 リリース 2016/02/24 • WMF 5.0 最終リリース (初回リリース は2015/12) 2016/08/02 • PowerShell 5.1 を搭載した Windows 10 Anniversary Update(RS1)リリース 2017/01 • WMF 5.1リリース (予定) 9 PS5.0 PS5.1 • .NET Framework 4.5上で稼働 • PackageManagementによるパッケージ管理 • PSReadline、PesterなどのOSSの採用 • .NET Framework 4.6上で稼働 • Core Editionの登場(Nano Server) * .NET Core 上で稼働 ※OSのリリース日に関してはボリュームライセンス版のリリース日を基準としています
  10. 10. PowerShellふりかえり  対応OS 10 https://msdn.microsoft.com/en-us/powershell/wmf/5.1/compatibility より引用
  11. 11. PowerShellふりかえり  コマンド数(Function, Cmdlet)の推移 11 163 366 1153 1346 1433 1644 0 200 400 600 800 1000 1200 1400 1600 1800 PS 1.0 PS 2.0 PS 3.0 PS 4.0 PS 5.0 PS 5.1 ※1 各OSのインストール+Windows Update実施後の状態でコマンド数を計測 ※2 環境によって実際のコマンド数は変わるため、本グラフの値はあくまで参考値となります > Get-Command -CommandType Function,Cmdlet | Measure-Object | Select-Object Count Windows Server 2003 R2 Windows Server 2008 R2 Windows Server 2012 Windows Server 2012 R2 Windows Server 2016 Windows Server 2012 R2
  12. 12. PowerShellふりかえり 主要機能 • .NET Frameworkのオブジェクトを利用した型システム • Extended Type System • Adapted Type System • オブジェクトパイプライン • プロバイダー・ドライブ • コマンドレット • スナップイン • 関数 • エイリアス • などなど… 12  PowerShell 1.0の主要機能
  13. 13. PowerShellふりかえり 言語機能 • 高度な関数 • 例外処理(Try-Catch) • モジュール • スプラッティング 基盤関連 • PowerShell Remoting • バックグラウンドジョブ • トランザクション 開発環境 • Windows PowerShell Integrated Scripting Environment (ISE) 13  PowerShell 2.0の主な新機能
  14. 14. PowerShellふりかえり 言語機能 • 新しい演算子の追加 (ビットシフト、-in、-notin) • 非配列オブジェクトに対するCountプロパティ • ForEach-Object/Whre-Objectの簡易記法 基盤関連 • 実行基盤が.NET 2.0から.NET 4に • PowerShellエンジンの改善 • ワークフロー • スケジュールジョブ • モジュールの自動検索 • PowerShell Web Access 開発環境 • ISEの改良 14  PowerShell 3.0の主な新機能
  15. 15. PowerShellふりかえり 言語機能 • コレクションに対するWhere()、ForEach()メソッド • Dynamic Method • PipelineVariableパラメーター 基盤関連 • PowerShell Desired State Configuration(DSC) • 既定の実行ポリシーの変更(サーバーのみ) • ワークフローの機能強化 開発環境 • デバッガの機能強化 15  PowerShell 4.0の主な新機能
  16. 16. PowerShellふりかえり 言語機能 • Class構文の導入 • Enum構文の導入 基盤関連 • DSCの機能強化 • PackageManagement、PowerShellGet • PSReadlineやPesterといったOSSの採用 監査・セキュリティ • Just Enough Administration(JEA) • トレース機能の強化 開発環境 • リモートデバッグ機能の強化 • ISEでのTranscriptionのサポート 16  PowerShell 5.0の主な新機能
  17. 17. PowerShellふりかえり 言語機能 • using moduleステートメントのバージョン指定 • ファイルリダイレクトの非ハードコード化 基盤関連 • Core Editionの登場(Nano Server向け) • DSCの機能強化 • パフォーマンス改善 • 起動時のps1xml読み込みの廃止 • VT100サポート 監査・セキュリティ • カタログコマンドレット 17  PowerShell 5.1の主な新機能
  18. 18. 独断と偏見による総括 PowerShell 1.0~3.0 • 機能強化の期間 PowerShell 4.0 • DSCによるプロビジョニングツールとしての進化 PowerShell 5.0 • PSReadlineやPesterなどのOSSを積極採用 • PackageManagement、PowerShellGetによるパッケージエコシステム PowerShell 5.1 • Core Editionによるサポートプラットフォームの拡大 18
  19. 19. 2. これからのPowerShell 19
  20. 20. PowerShell for every system! 20
  21. 21. PowerShell for every system!  2016/08/18、突如 PowerShellがオープンソースに  ソースはGitHubで公開 ◦ https://github.com/PowerShell/PowerShell  同時に.NET Coreを基盤とした クロスプラットフォーム化 ◦ 対応プラットフォーム Linux (Ubuntu 14.04、 Ubuntu 16.04、 CentOS 7) MacOS 10.11 Windows 7、Windows 8.1/Windows Server 2012 R2~ 21
  22. 22. PowerShell 6.0  OSS化したPowerShellのバージョンは6.0 ◦ 現在はアルファ版 ◦ 2016/12/17時点でAlpha 14  機能に関してはCore EditionからWindows に特化した部分を除外したイメージ ◦ まだまだ足りない部分がある ◦ コマンド数 (Function + Cmdlet) Windows 10 : 456 Ubuntu 16.04 : 349 22
  23. 23. PowerShell 6.0  対応プラットフォームとエディション  現在はCore Editionのみバイナリ配布 ◦ デスクトップ版に関してどうなるかは不明  マイルストーンおよびリリース時期は不明 23 プラットフォーム Desktop Edition (.NET Framework) Core Edition (.NET Core) Windows △ *バイナリ未配布 〇 Windows (Nano Server) × △ *インストーラー無し Linux × 〇 Mac × 〇
  24. 24. これからのPowerShell  コミュニティからのフィードバックを重視 1. GitHub上でのIssue管理 2. Gitter、Slack上のチャットルーム 3. PowerShell-RFC ◦ GitHubでRFCにより新機能を議論 https://github.com/PowerShell/PowerShell-RFC 4. ドキュメント管理 ◦ GitHubでドキュメント管理。プルリク可能 https://github.com/PowerShell/PowerShell-Docs https://github.com/PowerShell/powerShell-Docs.ja-jp 24
  25. 25. これからのPowerShell  各ベンダー・サービスのCore Edition対応 1. Azure - AzureRM.NetCore.Preview (プレビュー版)  https://www.powershellgallery.com/packages/AzureRM.NetCore.Preview/  https://blogs.technet.microsoft.com/jessicadeen/azure/getting-started-with-powershell-core-and-azurerm- modules-on-ubuntu-and-os-x/ 2. AWS - AWSPowerShell.NetCore (ベータ版)  https://www.powershellgallery.com/packages/AWSPowerShell.NetCore/  https://aws.amazon.com/jp/blogs/developer/introducing-aws-tools-for-powershell-core-edition/ 3. GCP - CLOUD TOOLS FOR POWERSHELL (Ver. 1.0.0.1)  https://github.com/GoogleCloudPlatform/google-cloud-powershell/  http://googlecloudplatform-japan.blogspot.jp/2016/12/1-powershell-windows-linux.html 4. Vmware - PowerCLI Core (Ver. 1.0)  https://labs.vmware.com/flings/powercli-core 5. Docker - PowerShell Module for Docker (アルファ版)  https://github.com/Microsoft/Docker-PowerShell 25
  26. 26. 独断と偏見による予測 1. 機能面 ◦ 機能面ではPowerShellは成熟してきた 今後はセキュリティ面での強化が多くなる、かも? ◦ RFCも新機能より既存機能の改善案が多め 2. サーバー管理基盤としてのPowerShell ◦ マイルストーンが見えないので正直予測しにくい… ◦ ただし、コマンドレットのクロスプラットフォーム対応 は確実に増える ◦ DSC for Linuxの進化は期待できそう (PowerShell以外にOMIの進化も必要だが…) 26
  27. 27. 3. 誰のためのPowerShell 27
  28. 28. 28 ここから若干ポエム要素入ります
  29. 29. PowerShell for everyone? PowerShellは万人向けなのか? ◦PowerShellはサーバー管理、自動化に 特化したツール ◦当初はシステム管理者向けのツールと して提供されており、根本的な思想は 今も変わっていない ※もちろんシステム管理者でない開発者やパワーユーザーの使用も想定されており、 利用するにあたっての敷居は低い 29
  30. 30. PowerShell for everyone? ◦ 得意領域(一例) サーバー管理 ◦ 豊富なコマンドレット 定型処理の自動化 ◦ スクリプト言語としての 機能自体は多い ◦ 不得意領域(一例) 複雑なテキストデータの加工 ◦ grep、awkはかろうじて代替できるが sedの代替が無い バイナリデータの加工 ◦ PowerShellは オブジェクト⇔テキスト の変換が基本となっている 大量データを扱う処理 ◦ PowerShellは基本シングルプロセス で動作するのでメモリ的に死ぬ 30 PowerShellは得意領域と不得意領域が 明確に分かれている
  31. 31. 誰のためのPowerShell 私見 ◦PowerShellは利用のための敷居は低いが 万人向けのツールではない ◦クロスプラットフォーム化したことにより、 より多くの人がPowerShellに触れること になるが無理をしてまで使うものではない ◦とりあえず試して用途に合えば使い続ける くらいのスタンスを取ると良い 31
  32. 32. (補足)PowerShell と Bash 32 Bash on Ubuntu on Windows ◦ 現状Windows10のみ、開発者モード必須 ◦ サーバーOSに載るかは不明 PowerShellはBash(*sh)ではない ◦ Bash(*sh)はドキュメント指向 ◦ PowerShellはAPI指向  PowerShellとBashは対立するものではなく、 使い分けるもの
  33. 33. (補足)PowerShell と コマンドプロンプト 33  Windows 10 Insider Preview Build 14971で PowerShellが既定のシェルになった件 ◦ UI(Explorer)の変更だけでコマンドプロンプトは無くならない
  34. 34. 参考資料  Windows PowerShell - Wikipedia ◦ https://en.wikipedia.org/wiki/PowerShell  PowerShell 3.0概要 ◦ http://winscript.jp/powershell/246  PowerShell 4.0 の機能についてまとめてみる (前、後編) ◦ http://tech.guitarrapc.com/entry/2013/10/22/082655 ◦ http://tech.guitarrapc.com/entry/2013/10/25/071306  PowerShell v5の新機能と、実戦で使ってほしい機能 ◦ http://www.buildinsider.net/enterprise/powershelldsc/03  WMF 5.1の新機能をざっくり説明する その1~その4 ◦ http://stknohg.hatenablog.jp/entry/2016/07/30/191456 ◦ http://stknohg.hatenablog.jp/entry/2016/07/30/223710 ◦ http://stknohg.hatenablog.jp/entry/2016/07/31/014348 ◦ http://stknohg.hatenablog.jp/entry/2016/07/31/185311 34
  35. 35. 35

×