tech.guitarrapc.cóm

C#, PowerShell, Unity, Cloud, Serverless Technical Update and Features

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 でCmdlet を探す時に、扱う型で絞れることもできます。正直やったことある人は数少ないのではないでしょうか。

例えば、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 にチェックをいれて 実行。

f:id:guitarrapc_tech:20140515073805p:plain

PipelineVariables

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

たとえば、こう。

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

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

Get-Command | %{$_.Name}

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

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

ぜひ、使ってください。

まとめ

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