Oh! 365 blog

Office 365 と生きていく

Office 365 PowerShell 一番簡単なフィルタ方法 (Out-GridView)

PowerShell で出力結果をフィルタしたいとき、Out-GridView がものすごく便利です。普段 Where-Object や ? を使用した条件式を使っていますが、とりあえず絞り込みを試したい場合などは、Out-GridView で対話的にフィルタしています。業務上 SharePoint Online や Teams、Exchange Online などで PowerShell をよく使うので、SharePoint Online のコマンドを例に紹介します。


使い方は簡単で、以下のようにパイプ "|" でつないで Out-GridView をつけるだけです。 

Get-SPOSite | Out-GridView


Out-GridView を使うと以下のように別ウインドウが立ち上がり、コマンドの実行結果が反映されます。

f:id:keisuke-blog:20200621182653p:plain

Get-SPOSite の結果を別ウインドウに表示 (実行したコマンドは上部に表示)

上部の [フィルター] と表示されている入力ボックスでは、表示されているすべての列を対象に、フリー キーワードで検索できます。

 

f:id:keisuke-blog:20200621183237p:plain

test と入力すると、Title 列に test が含まれている行だけ表示される

また、[条件の追加] という項目から、特定の列を指定して詳細な条件式を追加することができます。条件式を追加するごとに表示も更新されるため、対話的に結果を見ることができます。そのため、複数の条件式もお手軽に試せます。

f:id:keisuke-blog:20200621183548p:plain

Template 列と Title 列の値で絞り込み

Out-GridView が便利な点は、フィルタした結果を簡単にコピペ可能な点です。マウス操作でも実現できますが、Windowsエクスプローラーと同様に、以下のショートカットキーで簡単に操作できます。

 

  • [Ctrl] + [A] で全選択
  • [Ctrl] + [C] で選択した行をコピー
  • [Ctrl] + [V] で Excelテキストエディタに張り付け
  • [Shift] を押しながら行をクリックして連続した行を選択
  • [Ctrl] を押しながらながら任意の行をクリックして任意の行を選択

 

さらに使い倒す方法

ここまでの内容だけでもとても便利なのですが、フィルタした結果を以降のコマンドでも使いまわしたいシーンもあると思います。このような場合、 -PassThru パラメータを使えば実現できます。

$site = Get-SPOSite | Out-GridView -PassThru

 
この例の場合、別ウインドウで対話的にフィルタした結果が、$site 変数に返されます。必要な値だけを選択して変数化できるので、使い勝手がいいです。

 

おわりに

PowerShell で結果をフィルタする場合、記述、実行、コンソールで結果を確認、修正という流れになります。使い慣れたコマンドであればいいですが、初めて絞り込みを試みるような場合などは、そもそもどのように条件式を書けば欲しい結果が得られるのかを確認する必要がります。そういった場面で、対話的にフィルタの結果を確認できるので、とても効率的に作業できると思います。最初からすべての結果を Excel に出力してから、Excel で絞り込みするのもいいですが、軽量かつお手軽に試せるので、こちらも使ってみてください。


また、SharePoint Online の管理用 PowerShell を使う方は、よく使うコマンドををコピペで使えるようをまとめているので、こちらもご参考ください。

www.samurainote.com

 

今回の投稿は以上です。