LoginSignup
3
3

More than 1 year has passed since last update.

Object Browser In PowerShellを見つけた話

Last updated at Posted at 2020-02-02

初めに

Poswershellで少し凝ったことをしたくなった場合、CUIに表示された文字列の実態はオブジェクトであると認識することはとても重要です。

PowerShell は、.NET 上に構築されたタスクベースのコマンド ライン シェルおよびスクリプト言語です。 PowerShell は、システム管理者およびパワー ユーザーが、オペレーティング システム (Linux、macOS、および Windows) とプロセスを管理するタスクを迅速に自動化するのに役立ちます。
PowerShell スクリプト - PowerShell | Microsoft Docs

最近、その助けになるであろうスクリプトが公開されていることを知りました。
Powershell版ObjectBrowserです。ここからダウンロードできます。
PowerShell Object Browser

解説はこちら
How to Create and Use an Object Browser In PowerShell

使い方

スクリプトを開いたpowershellプロセスで使えるクラスを表示

操作a

操作A.gif

色んなことがわかりますが、特にValuesタブ最終行のUnderlyingSystemTypeがとても助かります……

任意のObjectを表示

操作1.gif
操作2.gif

調べたいObjectがある時はPowershellタブから追加できます。
Add-Node [Object]$Object [String]$Name
Remove-Node [Object]$Node

応用:コマンド結果の比較

操作i.gif
操作ii.gif
パイプライン処理の結果とコレクションメソッド処理の結果を比較しています。

何に使うの?

VScodeのデバッグ機能や、gm -InputObject $Foo -Force | Out-GridViewだと、深い階層の情報を調べるのはなかなかメンドクサイです……
そんな時にお世話になっています。
応用.jpg

たとえば、Nugetからダウンロードしてきたライブラリの使いかたを調べる助けになったりしてます。

Powershell 7で使うためには

Powershell7で動かすには L5260以降のGenerate-PSObjectExplorerFormの修正が必要です。
参考 : Windows フォームに関する破壊的変更 - .NET Core | Microsoft Docs

  • System.Windows.Forms.MainMenuSystem.Windows.Forms.MenuStrip
  • System.Windows.Forms.MenuItemSystem.Windows.Forms.ToolStripMenuItem
  • $MainMenu.MenuItems.Add$MainMenu.Items.Add
  • $mnuView.MenuItems.Add$mnuView.DropDownItems.Add
  • L5821 $Form.ShowDialog()| Out-Null の前行に $Form.Controls.Add($MainMenu)を追加

    // Add the MenuStrip last.
    // This is important for correct placement in the z-order.
    MenuStrip クラス (System.Windows.Forms) | Microsoft Docs コード例より

余談

  • 起動する際、Start-ThreadJobを使うといい感じでした。
  • 二次配布、GitHubの使い方とかそこらへんが疎いので勉強中です。
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3