tech.guitarrapc.cóm

Technical updates

Windows PowerShell Unplugged with Jeffrey Snover が公開されています。

TechEd見てますか? 私はしんでました。見てません。

ということで、後から見たい人向けに!

Channel 9 : TechED 2014 - Windows PowerShell Unplugged with Jeffrey Snover

Unpluggedは、 Snover自身がPowerShellをこう使おうぜ! という内容を実演するものです。

そういえば紹介してたのは、、私も良く使うのですが記事に出してなかったので少し例を。

OutVariable パラメータ

PowerShell V5 PreviewでOneGetがありますが、パッケージ全体を見つつ再利用したいと思った時どうしますか?

Filterを自作する? そんなことは必要ありません。こうするだけです。

Find-Package -OutVariable a

OutVariableパラメータに変数名を指定すると、実行結果をホストに出力しつつもその内容を変数aに格納します。

$a = Find-Package

が、ホスト出力を出さずに丸ごと$aへ格納してしまうのと違い、Teeに近い動作です。

-ParameterTypeを使って、Get-Command の結果を型タイプで絞る

PowerShellがOOじゃないよねー。とか言うのは、まぁ別の記事にしますが、型を扱えるなら扱える例を。 Get-Commandでコマンドレットを探す時に、扱う型で絞れることもできます。正直やったことある人は数少ないでしょう。

例えば、System.Diagnostics.Process型を扱うものを探すなら。

Get-Command -ParameterType System.Diagnostics.Process
CommandType Name          Source
----------- ----          ------
Cmdlet      Debug-Process Microsoft.PowerShell.Management
Cmdlet      Get-Process   Microsoft.PowerShell.Management
Cmdlet      Stop-Process  Microsoft.PowerShell.Management
Cmdlet      Wait-Process  Microsoft.PowerShell.Management

Snippet を使おう

PowerShell ISEで、Ctrl + Jでスニペットを呼び出せます。

functionを0から書くときに、あるいは独自のスニペットを作って便利に。どうぞ。

PowerShell ISE の Commands タブ

PowerShellのcmdletがワカラナイ? ワカラナクていいのです。PowerShell ISEでは、 GUIからヒントを与えて、実行までできます。

helpで、Cmdletを検索して、Get-Helpをマウスでくり! Detail ViewのNameに探したいコマンドのget-procesを入れて、 Detailedにチェックをいれて実行。 image

PipelineVariables

PowerShell 4.0からは、自動変数 $_ を任意の名前に、かつパイプラインを貫通して利用できます。

たとえば、こう。

Get-Command -PipelineVariable gc | %{gc.Name}

これで、自動変数 $_ の代わりに $gcが使えます。

Get-Command | %{$_.Name}

また、自動変数の最大の問題である、そのパイプラインでしか使えない 問題も、 PipelineVariableならパイプラインを貫通して利用できるので解決します。

このPipeline Variableは、パイプラインの終了時に破棄されるので、次のコマンドに影響しません。

ぜひ、使ってください。

まとめ

DoneとSnoverのお互いをけん制するTalkは面白いので1回見てみてください。