TechEd見てますか? 私はしんでました。見てません。
ということで、後から見たい人向けに!
Channel 9 : TechED 2014 - Windows PowerShell Unplugged with Jeffrey Snover
Unpluggedは、 Snover自身がPowerShellをこう使おうぜ! という内容を実演するものです。
そういえば紹介してたのは、、私も良く使うのですが記事に出してなかったので少し例を。
- OutVariable パラメータ
- -ParameterTypeを使って、Get-Command の結果を型タイプで絞る
- Snippet を使おう
- PowerShell ISE の Commands タブ
- PipelineVariables
- まとめ
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にチェックをいれて実行。
PipelineVariables
PowerShell 4.0からは、自動変数 $_ を任意の名前に、かつパイプラインを貫通して利用できます。
たとえば、こう。
Get-Command -PipelineVariable gc | %{gc.Name}
これで、自動変数 $_ の代わりに $gcが使えます。
Get-Command | %{$_.Name}
また、自動変数の最大の問題である、そのパイプラインでしか使えない 問題も、 PipelineVariableならパイプラインを貫通して利用できるので解決します。
このPipeline Variableは、パイプラインの終了時に破棄されるので、次のコマンドに影響しません。
ぜひ、使ってください。
まとめ
DoneとSnoverのお互いをけん制するTalkは面白いので1回見てみてください。