しばたテックブログ

気分で書いている技術ブログです。

Pesterでパラメタライズドテストを行う

意外とドキュメントが無かったので*1ブログに書いておきます。

github.com

テスト例

Gistに簡単な例を上げました。
これを見てもらえば言いたいことは一発でわかっていただけるかと思います。

Pesterでパラメタライズドテストを行うサンプル

実行結果はこんな感じになります。

f:id:stknohg:20161128215803p:plain

解説

例を挙げて終わりだと流石に芸がなさすぎるので軽く解説を入れます。

サポートされるバージョン

PesterではVer.3.1からItコマンドでパラメタライズドテストがサポートされる様になりました。

導入に至る経緯はこちらのIssueに載っています。

github.com

-TestCasesパラメーターについて

Itコマンドで-TestCasesパラメーターを指定することでパラメタライズドテストを行うことができます。
このパラメーターの型は[IDictionary[]]であり、先述の例にある様に通常はHashtableの配列が来ることを想定しています。

そして、HashTableのキーがテストを実行するスクリプトブロックのパラメーターに対応します。

また、-Nameパラメーターの文字列では<HashTableのキー名>の形式で与えられたパラメーター値を展開することが可能です。

最後に

以上です。
割と見たまま直感的だと思いますので便利に使えると思います。

*1:一応ヘルプには載っていましたがわかりにくかったので...

PowerShell 10 Year Anniversary Celebration Eventが開催されました

イベントから既に1週間以上経ってしまいましたが、個人的な備忘録も兼ねてブログ書きます。

f:id:stknohg:20161123192936p:plain

PowerShell 10 Year Anniversary Celebration Event

イベントはPowerShell 1.0がリリースされた日からちょうど10周年となる、2016/11/14の8:00 ~ 16:00(PST)*1にChannel 9のストリーミングで行われました。
内容については以下でご覧ください。

channel9.msdn.com

ちなみにPowerShell 1.0リリース当時のブログはこちらになります。

It’s a Wrap! Windows PowerShell 1.0 Released! | PowerShell Team Blog

なお私はイベントの日程を1日勘違いしてしまいイベントを寝過ごしてしまいました...
暇な時間を見つけて少しづつ動画を観ています。

コードゴルフ

イベント中はストリーミングと同時にコードゴルフ大会が行われました。

こちらはカナダのMVPのThomas RaynerさんとWill Andersonさんにより3つのお題(Hole)が作られ、GitHub上に概要が記載されています。

github.com

大会はすでに終わっていますが、現在でもお題にチャレンジすること自体はできますのでぜひ挑戦してみてください。
私もやってみましたが結構面白かったです。

ちなみに実行環境についてのレギュレーションが記載されていませんでしたが、お題と回答を見るに最新のPowerShell(Windows10+PowerShell5.1)を前提としている様です。

以下簡単にお題の解説をしておきます。
答えは下記のリンク先から確認してください。

Hole.1

お題

PowerShell 10 Year Anniversary - Hole 1

解説

基本的にはGet-HotFixコマンドレットで得られる結果と同じものが期待されています。
ただし単純にGet-HotFixを実行した戻り値の結果は[Microsoft.Management.Infrastructure.CimInstance]にならないのでそこが最初の関門になります。
あまり短くする要素が無い様に思えたのですが、上位の回答を見たら結構すごかったです...

Hole.2

お題

PowerShell 10 Year Anniversary - Hole 2

解説

こちらは愚直に処理を書くと、

Get-ChildItem "C:\windows\System32\" -File | Select-Object Extension | Group-Object Extension | Sort-Object Count -Descending | Select-Object -First 10

な感じになります。
あとはこれをどう短くしていくか?といったところです。

Hole.3

お題

PowerShell 10 Year Anniversary - Hole 3

解説

こちらも愚直に処理を書くと、

Get-Alias | Where-Object { $_.Name.Length -lt 3 -and $_.Definition -notlike "Get-*" }

となります。
Hole 1同様にあまり短くする要素が無い様に見えるところをどう短くするか悩ましいい感じです。

動画一覧

Channel9のサイトだと時系列がわかりにくかったのでここで順に並べておきます。
まだ全部の動画を見ていないので、見終わったら少しくらいはコメントを入れるかもしれません...

0. PowerShell 10th Anniversary Celebration Kickoff

1. Keynote: PowerShell Then and Now

2. Manage Your Garden Sprinkler and Your Mood With PowerShell

3. SQL Server Cmdlets and Community Involvement

4. PowerShell Evolution

5. The Scripting Guy Talks-PowerShell Community Then and Now

6. Open Source & Community Contributions

7. PowerShell's Senior Team Remembers

8. Day in the Life of a Github maintainer and committee member

9. PowerShell For My Tesla

10. PowerShell and Azure Automation

11. PowerShell and the REST of the Things

12. Controlling Azure with a PowerShell Cloudbot

13. Provision a MineCraft Server with PowerShell DSC

14. Highlights from the PowerShell Conferences

15. Future Directions for PowerShell

16. PowerShell 10th Anniversary Wrap-Up

PowerShell Code Golf contest - status update

あと時系列的にどこか不明だったのですがコードゴルフの途中経過に関する放送です。

Update 1
Update 2

*1:日本時間だと2016/11/15 1:00 ~ 9:00

Windows10 Insider Preview Build 14971でPowerShellが既定のコマンドラインシェルになった話

すでに各所で日本語情報も出てますが、

blogs.windows.com

の話です。
本エントリではPowerShellに絞った内容にします。

はじめに

PowerShellが既定のコマンドラインシェルになるといってもコマンドプロンプト(cmd.exe)が無くなるとか、OSの挙動が変わるといった事ではなく、ユーザーインターフェース上でPowerShellを既定で表示・選択できる様にするといった変更になります。

現時点ではInsider Preview内の変更ですが、特に問題が無ければ来年に予定されているCreators Update(RS2)に反映されるものと予想されます。


【2016/11/21追記】

結構このニュースが誤解されているみたいなので追記します。

既定のシェルという表現を使っていますが、今回の変更は単純にユーザーインターフェースの(特にExplorerの)変更だけです。
それ以外は何も変わっていませんし将来コマンドプロンプトやPowerShellがどうなるかといった話も一切されていません。

この誤解については、我らが牟田口先生の以下のツイートにある様に原文の微妙な言い回しが誤解の要因となっている様です。

そして、個人的にはPowerShell Teamの中の人がこんなツイートしてるのも誤解の一旦かな、とも思っています。(私はこっちにやられた感があります...)

改めて本エントリの変更について述べておくと

  1. 既定のシェルになると言ってもユーザーインターフェースの(特にExplorer内の)既定の話である。
  2. コマンドプロンプトが無くなるわけではなく、PowerShellやコマンドプロンプトの挙動が変わるわけでもない。
  3. 将来的な方針については一切語られていない。

強いて現時点で言えることがあるとすれば、

「コマンドプロンプトが見つけにくくなります。」

ということだけだと思います。

【追記ここまで】


変更点について

Build 14971で以下の3点が変更になりました。

1. WIN + X メニューの変更

WIN+Xキーを押すかスタートボタンを右クリックして表示されるメニューのコマンドプロンプトPowerShellに変更になります。

f:id:stknohg:20161119150133p:plain

これは現時点でもWindowsの設定の個人用設定→タスクバーから設定可能ですが、この設定のデフォルトがコマンドプロンプトからPowerShellに変わることになります。

f:id:stknohg:20161119150151p:plain

2. エクスプローラー(ファイルメニュー)の変更

こちらはちょっとわかりにくいのですが、エクスプローラーのファイルメニューにある、コマンドプロンプトを開くが無くなりWindows PowerShellを開くだけに変わります。

f:id:stknohg:20161119151416p:plain

ただ、日本語環境で試したのが悪かったのかBuild 14971のメニューは常に使用不可のままでした...
そのうち改善されるとはおもいますが、コマンドプロンプトを開くが無くなることだけ押さえておけば十分でしょう。

【2016/12/10追記】

Build 14986で改善されメニューが使用可能になっていました。単純なバグだった様です。

f:id:stknohg:20161210040853p:plain

3. エクスプローラー(コンテキストメニュー)の変更

続けて、さらにわかりにくいのですが、エクスプローラー上の余白をShiftボタンを押しながら右クリックした際に出るコマンドウィンドウをここで開くがPowerShellに切り替わる様です。

ただし、こちらに関しては、前述のブログにそう書いていたのですが私が試した環境では何も変更されていませんでした。
これも日本語環境だから悪いのかどうかはっきりしません...

f:id:stknohg:20161119152730p:plain

【2016/12/10追記】

こちらもBuild 14986で改善されPowerShellウィンドウをここで開くに変更されていました。

f:id:stknohg:20161210041220p:plain

変わらない点について

最初に述べてますがコマンドプロンプトが無くなるわけではないので、普通にCortanaからコマンドプロンプトは検索・実行できますし、エクスプローラーのアドレスバーにcmdと打てばこれまで通りコマンドプロンプトが起動されたりもします。

Windows Server 2016への影響は?

正直わかりません。

が、いつになるかわかりませんがWindows Server 2016にもCreators Updateの様な大型アップデートは来るでしょうし、その時には同じ変更がなされるだろうと予想しています。

おまけ

先週*1行われたPowerShell 10 Year Anniversaryの動画がChannel9で公開されていますのでぜひご覧ください。

channel9.msdn.com

イベント自体が8時間の長丁場だったため動画の量も結構なものになっています。
私は暇なときにちょっとずつ見る様にしています。

stknohg.hatenablog.jp

*1:11/14はPowerShell記念日です