~UI Automationって動くの?その1~ UI Automation with PowerShell 奮戦記 1日目

UI Automation*1で遊ぼう!

ちまたで議論されてるPowerShellUI Automationが動かない?
について検証していきましょう。

では、「コンピュータ名」のとこの画面を表示してみましょう。

f:id:amon52280:20181203235901p:plainf:id:amon52280:20181203235718p:plain
システムのプロパティで「コンピュータ名」タブをクリック

まず、システムのプロパティ画面の構成を表示してみましょう。
PowerShell ISEで実行してみる。

# UI Automation を組み込む
Add-Type -AssemblyName UIAutomationClient
Add-Type -AssemblyName UIAutomationTypes

# システムのプロパティを表示
SystemPropertiesAdvanced.exe

# ルートエレメント
$re = [System.Windows.Automation.AutomationElement]::RootElement

$subtree = [System.Windows.Automation.TreeScope]::Subtree
$condition_true = [System.Windows.Automation.Condition]::TrueCondition

# システムのプロパティ画面の構成
$syse = $re.FindAll($subtree,$condition_true) | ?{($_.current.name -match "システムのプロパティ")}
$syse | %{$_.FindAll($subtree,$condition_true)} | %{$_.current} | select name

実行結果

Name 
 ----                                                                
システムのプロパティ
詳細設定
Administrator としてログオンしない場合は、これらのほとんどは変更できません。
パフォーマンス 
視覚効果、プロセッサのスケジュール、メモリ使用、および仮想メモリ 
設定(S)...                  
ユーザー プロファイル
サインインに関連したデスクトップ設定 
設定(E)...
起動と回復
システム起動、システム障害、およびデバッグ情報
設定(T)
環境変数(N)...
OK
キャンセル
適用(A)
...
Editor Selection

むむ タブが出てこない・・・

*1:ここでのUI AutomationはSystem.Windows.Automationのことです