#Requires -RunAsAdministrator $ErrorActionPreference = 'Continue' $dte = New-Object -ComObject TcXaeShell.DTE.17.0 $dte.MainWindow.Visible = $true try { $dte.SuppressUI = $false } catch {} $dte.Solution.Open('C:\Users\tonycao\work\twincat3-auto-cli\TwinCAT_EL6695_Primary_2kHz\TwinCATProject1.sln') Start-Sleep 25 $sm = $null for ($i = 0; $i -lt 20; $i++) { try { $sm = $dte.Solution.Projects.Item(1).Object; if ($sm) { break } } catch {} Start-Sleep 3 } if (-not $sm) { Write-Host 'no sysmgr'; exit 1 } $cands = @('TISA','TISB','TISD','TISF','TISH','TISJ','TISK','TISL','TISO','TISP','TISQ','TISR','TIST','TISU','TISV','TISW','TISX','TISZ','TIAN','TIR1','TIR2','TIR3','TIR4','TIR5','TIR6','TIR7','TIR8','TIR9','TIRE') foreach ($p in $cands) { try { $it = $sm.LookupTreeItem($p) if ($it) { Write-Host "$p => '$($it.Name)' cc=$($it.ChildCount) subtype=$($it.ItemSubType)" } } catch {} } Write-Host 'done'