Big thanks for Joe Parker (@joe_lenovo) gave us PnP ID of Lenovo ThinkPad Pro/Ultra docks.
ThinkPad Pro dock 40A1: USB\VID_17EF&PID_1012
ThinkPad Ultra 40A2: USB\VID_17EF&PID_1010
This a simple PowerShell script for detect if Lenovo laptops are attached to dock station, includes mechanical Lenovo ThinkPad docks and Lenovo USB 3.0 Pro/Ultra docks.
$Manufacturer = (Get-WmiObject win32_computersystem).Manufacturer if ($Manufacturer -like "Lenovo") { try { $DeviceNames = Get-WmiObject Win32_USBControllerDevice -ErrorAction Stop | ForEach-Object { [wmi]($_.Dependent) } | Where-Object { $_.name -like "Displaylink*" -or $_.name -like "ThinkPad USB*dock*" -or $_.DeviceID -like "*usb\vid_17ef&pid_1010*" -or $_.DeviceID -like "*usb\vid_17ef&pid_1012*" } | Sort-Object Manufacturer, Description, DeviceID | Format-Table -GroupBy Manufacturer Description, Service, DeviceID, name $DeviceNames } catch { write-host $Error[0] } }
Or:
$Manufacturer = (Get-WmiObject win32_computersystem).Manufacturer if ($Manufacturer -like "Lenovo") { try { $DeviceNames = Get-PnpDevice -ErrorAction Stop | Where-Object { ($_.name -like "Displaylink*" -or $_.name -like "ThinkPad USB*dock*" -or $_.DeviceID -like "*usb\vid_17ef&pid_1010*" -or $_.DeviceID -like "*usb\vid_17ef&pid_1012*") -and $_.Status -like "OK" } | Sort-Object Manufacturer, Description, DeviceID | Format-Table -GroupBy Manufacturer Description, Service, DeviceID, name $DeviceNames } catch { write-host $Error[0] } }