Files
claudetools/scratch-qbwc.ps1
Howard Enos a2a277ab67 sync: auto-sync from HOWARD-HOME at 2026-07-07 20:31:16
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-07-07 20:31:16
2026-07-07 20:31:47 -07:00

42 lines
2.3 KiB
PowerShell

$ErrorActionPreference='SilentlyContinue'
"===== .QWC application files (define the connected app) ====="
$roots = @('C:\Share\Quickbooks','C:\ProgramData\Intuit','C:\Program Files\Common Files\Intuit','C:\Program Files (x86)\Common Files\Intuit','C:\Program Files (x86)\Intuit','C:\Program Files\Intuit')
$qwc = @()
# top-level of the QB data folder (where apps usually drop the .qwc)
$qwc += Get-ChildItem 'C:\Share\Quickbooks' -Filter *.qwc -ErrorAction SilentlyContinue
# recursive in the (small) profile + program locations
foreach($r in @('C:\Users','C:\ProgramData\Intuit','C:\Program Files\Common Files\Intuit','C:\Program Files (x86)\Common Files\Intuit')){
if(Test-Path $r){ $qwc += Get-ChildItem $r -Recurse -Filter *.qwc -ErrorAction SilentlyContinue }
}
$qwc = $qwc | Sort-Object FullName -Unique
if(-not $qwc){ "(no .qwc files in searched locations)" }
foreach($f in $qwc){
"### $($f.FullName) (modified $($f.LastWriteTime))"
try { [xml]$x = Get-Content $f.FullName -Raw
" AppName : $($x.QBWCXML.AppName)"
" AppURL : $($x.QBWCXML.AppURL)"
" AppSupport : $($x.QBWCXML.AppSupport)"
" AppDescription: $($x.QBWCXML.AppDescription)"
" UserName : $($x.QBWCXML.UserName)"
} catch { " raw:"; (Get-Content $f.FullName -Raw) }
}
"`n===== Web Connector data dirs (per-user) ====="
Get-ChildItem 'C:\Users\*\AppData\Local\Intuit\QBWebConnector' -Directory -ErrorAction SilentlyContinue | ForEach-Object {
"-- $($_.FullName) --"
Get-ChildItem $_.FullName -Recurse -ErrorAction SilentlyContinue | Select-Object @{n='KB';e={[math]::Round($_.Length/1KB,1)}},FullName,LastWriteTime | Format-Table -Auto -Wrap | Out-String
}
"`n===== Web Connector LOG - app names / URLs it talks to ====="
$logs = Get-ChildItem 'C:\Users\*\AppData\Local\Intuit\QBWebConnector','C:\ProgramData\Intuit\QBWebConnector' -Recurse -Include *.txt,*.log -ErrorAction SilentlyContinue
foreach($l in $logs){
"### $($l.FullName)"
Select-String -Path $l.FullName -Pattern 'AppName|App Name|AppURL|Connecting|http' -ErrorAction SilentlyContinue | ForEach-Object { $_.Line.Trim() } | Sort-Object -Unique | Select-Object -Last 25 | Out-String
}
"`n===== registry-registered Web Connector apps ====="
reg query "HKLM\SOFTWARE\Intuit\QBWebConnector" /s 2>$null
reg query "HKLM\SOFTWARE\WOW6432Node\Intuit\QBWebConnector" /s 2>$null
"===== DONE ====="