Ik heb een systeem waarmee ik via een seriele poort veel verschillende hardware test.
Deze poort wordt door Windows toegewezen wanneer de hardware wordt aangesloten, dit werkt prima.
Nadeel; elk nieuw apparaat krijgt een nieuwe (oplopend) COM poort nummer toegewezen.
Wanneer het aantal poorten boven de 9 komt kan ik ze niet meer gebruiken omdat het programma wat ik gebruik (Porcomm) dit niet ondersteund.
Er worden telkens maar 1 a 2 devices tegelijk getest.
De oplossing is om de 'niet gebruikte' COM poorten telkens te wissen in apparaatbeheer.
Dit werkt prima, maar is niet noob-friendly en omslachtig.
Ik dacht om dit via PowerShell te doen, wanneer een COM poort disconnect komt deze als 'unknown'
So far so good, het te verwijderen apparaat is gevonden. (COM9, deze heeft status Unknown)
Nu kwam ik deze tip tegen:
https://stackoverflow.com...-present-network-adapters
Dit heb ik omgebouwd naar 'mijn' situatie en dit werkt voor een deel.
Hij verwijdert alleen de properties en niet de key zelf (wat remove hardware in de device manager gui WEL doet)
Wanneer ik de key probeer te verwijderen krijg ik geen toegang, ook niet via regedit (zowel gewoon als administrator geprobeert).
Ik krijg nu een 'leeg' apparaat in PowerShell en in apparaatbeheer een 'unknown device'
Mijn vraagstelling is nu; hoe krijg ik deze keys weg zodat de COM poort weer wordt vrijgegeven om door nieuwe apparaten te bezetten?
Deze poort wordt door Windows toegewezen wanneer de hardware wordt aangesloten, dit werkt prima.
Nadeel; elk nieuw apparaat krijgt een nieuwe (oplopend) COM poort nummer toegewezen.
Wanneer het aantal poorten boven de 9 komt kan ik ze niet meer gebruiken omdat het programma wat ik gebruik (Porcomm) dit niet ondersteund.
Er worden telkens maar 1 a 2 devices tegelijk getest.
De oplossing is om de 'niet gebruikte' COM poorten telkens te wissen in apparaatbeheer.
Dit werkt prima, maar is niet noob-friendly en omslachtig.
Ik dacht om dit via PowerShell te doen, wanneer een COM poort disconnect komt deze als 'unknown'
code:
1
2
3
4
5
6
7
8
| PS C:\WINDOWS\system32> Get-PnpDevice -class Ports | Select FriendlyName,Status,InstanceId FriendlyName Status InstanceId ------------ ------ ---------- ECP Printer Port (LPT1) OK ACPI\PNP0401\5 Prolific USB-to-Serial Comm Port (COM6) OK USB\VID_067B&PID_2303\7&239B083F&0&4 USB Serial Port (COM8) OK FTDIBUS\VID_0403+PID_6015+DN05RTLQA\0000 USB Serial Port (COM9) Unknown FTDIBUS\VID_0403+PID_6015+DN05D2Y4A\0000 |
So far so good, het te verwijderen apparaat is gevonden. (COM9, deze heeft status Unknown)
Nu kwam ik deze tip tegen:
https://stackoverflow.com...-present-network-adapters
Dit heb ik omgebouwd naar 'mijn' situatie en dit werkt voor een deel.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| PS C:\WINDOWS\system32> $Devs = Get-PnpDevice -class Ports | ? Status -eq Unknown | Select FriendlyName,InstanceId >> >> ForEach ($Dev in $Devs) { >> Write-Host "Removing $($Dev.FriendlyName)" -ForegroundColor Cyan >> $RemoveKey = "HKLM:\SYSTEM\CurrentControlSet\Enum\$($Dev.InstanceId)" >> Get-Item $RemoveKey | Select-Object -ExpandProperty Property | %{ Remove-ItemProperty -Path $RemoveKey -Name $_ -Verbose } >> } >> Write-Host "Done. Please restart!" -ForegroundColor Green Removing USB Serial Port (COM9) VERBOSE: Performing the operation "Remove Property" on target "Item: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FTDIBUS\VID_0403+PID_6015+DN05D2Y4A\0000 Property: DeviceDesc". VERBOSE: Performing the operation "Remove Property" on target "Item: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FTDIBUS\VID_0403+PID_6015+DN05D2Y4A\0000 Property: Capabilities". VERBOSE: Performing the operation "Remove Property" on target "Item: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FTDIBUS\VID_0403+PID_6015+DN05D2Y4A\0000 Property: Address". VERBOSE: Performing the operation "Remove Property" on target "Item: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FTDIBUS\VID_0403+PID_6015+DN05D2Y4A\0000 Property: ContainerID". VERBOSE: Performing the operation "Remove Property" on target "Item: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FTDIBUS\VID_0403+PID_6015+DN05D2Y4A\0000 Property: HardwareID". VERBOSE: Performing the operation "Remove Property" on target "Item: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FTDIBUS\VID_0403+PID_6015+DN05D2Y4A\0000 Property: ConfigFlags". VERBOSE: Performing the operation "Remove Property" on target "Item: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FTDIBUS\VID_0403+PID_6015+DN05D2Y4A\0000 Property: ClassGUID". VERBOSE: Performing the operation "Remove Property" on target "Item: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FTDIBUS\VID_0403+PID_6015+DN05D2Y4A\0000 Property: Driver". VERBOSE: Performing the operation "Remove Property" on target "Item: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FTDIBUS\VID_0403+PID_6015+DN05D2Y4A\0000 Property: UpperFilters". VERBOSE: Performing the operation "Remove Property" on target "Item: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FTDIBUS\VID_0403+PID_6015+DN05D2Y4A\0000 Property: Mfg". VERBOSE: Performing the operation "Remove Property" on target "Item: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FTDIBUS\VID_0403+PID_6015+DN05D2Y4A\0000 Property: Service". VERBOSE: Performing the operation "Remove Property" on target "Item: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FTDIBUS\VID_0403+PID_6015+DN05D2Y4A\0000 Property: FriendlyName". Done. Please restart! PS C:\WINDOWS\system32> |
Hij verwijdert alleen de properties en niet de key zelf (wat remove hardware in de device manager gui WEL doet)
Wanneer ik de key probeer te verwijderen krijg ik geen toegang, ook niet via regedit (zowel gewoon als administrator geprobeert).
Ik krijg nu een 'leeg' apparaat in PowerShell en in apparaatbeheer een 'unknown device'
code:
1
2
3
4
5
6
7
8
| PS C:\WINDOWS\system32> Get-PnpDevice -class Ports | Select FriendlyName,Status,InstanceId FriendlyName Status InstanceId ------------ ------ ---------- ECP Printer Port (LPT1) OK ACPI\PNP0401\5 Prolific USB-to-Serial Comm Port (COM6) OK USB\VID_067B&PID_2303\7&239B083F&0&4 USB Serial Port (COM8) OK FTDIBUS\VID_0403+PID_6015+DN05RTLQA\0000 Unknown FTDIBUS\VID_0403+PID_6015+DN05D2Y4A\0000 |
Mijn vraagstelling is nu; hoe krijg ik deze keys weg zodat de COM poort weer wordt vrijgegeven om door nieuwe apparaten te bezetten?