#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\TwinCATProject1.sln') Start-Sleep 25 $proj = $dte.Solution.Projects.Item(1) $n = $proj.ProjectItems.Count Write-Host "top-level items: $n" for ($i = 1; $i -le $n; $i++) { $it = $proj.ProjectItems.Item($i) Write-Host "[$i] $($it.Name)" try { $m = $it.ProjectItems.Count for ($j = 1; $j -le $m; $j++) { Write-Host " - $($it.ProjectItems.Item($j).Name)" } } catch {} }