初めに
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プロセスで使えるクラスを表示
色んなことがわかりますが、特にValuesタブ最終行のUnderlyingSystemType
がとても助かります……
任意のObjectを表示
調べたいObjectがある時はPowershellタブから追加できます。
Add-Node [Object]$Object [String]$Name
Remove-Node [Object]$Node
応用:コマンド結果の比較
パイプライン処理の結果とコレクションメソッド処理の結果を比較しています。
何に使うの?
VScodeのデバッグ機能や、gm -InputObject $Foo -Force | Out-GridView
だと、深い階層の情報を調べるのはなかなかメンドクサイです……
そんな時にお世話になっています。
たとえば、Nugetからダウンロードしてきたライブラリの使いかたを調べる助けになったりしてます。
Powershell 7で使うためには
Powershell7で動かすには L5260以降のGenerate-PSObjectExplorerForm
の修正が必要です。
参考 : Windows フォームに関する破壊的変更 - .NET Core | Microsoft Docs
-
System.Windows.Forms.MainMenu
→System.Windows.Forms.MenuStrip
-
System.Windows.Forms.MenuItem
→System.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の使い方とかそこらへんが疎いので勉強中です。