- El хардвер ИД јединствено идентификује сваки уређај и виндовс Он га користи да возачилиценце и безбедност.
- ПоверСхелл омогућава вам да лако наведете и филтрирате УСБ ИД са командлетима као што су Get-PnpDevice и WMI класе.
- Могуће је аутоматизовати праћење УСБ уређаја помоћу скрипти које шаљу податке на централни сервер путем РЕСТ АПИ-ја.
- Алати попут Управитељ уређаја и USBView олакшавају читање VID/PID и других кључних поља USB дескриптора.
Ако сте икада прикључили УСБ диск и ваш рачунар је почео чудно да се понаша или је Windows приказао мистериозну поруку о грешци, проблем је вероватно повезан са... Идентификатор хардвера USB уређаја (ИД хардвера)Знање како пронаћи тај ИД помоћу PowerShell-а и других уграђених Windows алата је вештина која вам може уштедети много главобоља, посебно у пословним окружењима где инсталирање софтвера треће стране није дозвољено.
Штавише, то је обавезно у многим компанијама контролишите који су USB уређаји повезани, региструјте њихове ID-ове и имајте могућност праћења Из безбедносних разлога и због усклађености са прописима. Од спречавања цурења информација до блокирања уласка малваре Када се ради о зараженом УСБ уређају, кључно је правилно идентификовати сваки уређај. Овде ћете видети, веома детаљно, како HWID функционише, како добити УСБ ИД помоћу PowerShell-а и других алата и како користити те информације за дијагностиковање проблема и за аутоматизацију праћења уређаја.
Шта је хардверски ИД (HWID) и зашто би вас то требало занимати?
El ИД хардвера или HWID је јединствени дигитални идентификатор повезан са сваком физичком компонентом. вашег рачунара: матична плоча, чврсти диск, графичка картица, мрежни адаптери, USB контролери итд. Често се назива „отисак прста“ уређаја јер служи да га разликује од осталих чак и када су два рачунара наизглед идентична.
На типичном рачунару, оперативни систем комбинује HWID-ови неколико главних компоненти за изградњу глобалног идентитета машинеТај идентитет је кључан за ствари као што су софтверске лиценце које су везане за одређени рачунар, праћење ИТ средстава и многи безбедносни процеси који морају да осигурају да програм ради само на овлашћеном хардверу.
Овај идентификатор није измислио Windows без разлога: Сваки део хардвера има свој ИД забележен у фирмверу (на пример, у EEPROM-у уређаја). Оперативни систем га чита и из тих информација генерише низове идентификатора који се затим појављују у Управитељу уређаја, PowerShell-у или у команде као ВМИЦ.
Када први пут инсталирате оперативни систем, Windows прави снимак те хардверске конфигурације и генерише скуп идентификатора повезаних са том машином. Ако касније промените нешто значајно, попут матичне плоче, скуп HWID-ова се може довољно променити да поново покрене верификацију лиценце или чак захтева поновну активацију система у неким производима.
Како направити идентификатор УСБ уређаја
У случају USB уређаја, HWID је изведен из веома специфичног дескриптора: Дескриптор USB уређаја (USB_DEVICE_DESCRIPTOR)То је структура података коју сваки USB уређај мора да обезбеди и која описује његове основне карактеристике: класу, подржану USB верзију, произвођача, производ итд.
Унутар тог дескриптора постоје два кључна поља: idVendor-а и idProduct-аПрви идентификује произвођача (Vendor ID или VID), а други специфични модел производа (Product ID или PID). Windows користи ове вредности за конструисање стрингова као што су USB\VID_XXXX&PID_YYYY… које затим видите као „ИД-ови хардвера“ у Управитељу уређаја.
На пример, Microsoft USB веб камера може имати нешто попут idVendor = 0x045E (Мајкрософт) и idProizvoda = 0x0728Тај пар вредности, заједно са бројем верзије уређаја (bcdDevice) и друга поља, комбинују се да би формирали ИД-ови хардвера и компатибилни ИД-ови са којим Windows проналази исправан драјвер.
Поље бцдУСБ Дескриптор означава верзију USB спецификације којој је уређај у складу (на пример, 0x0200 за USB 2.0). Ово помаже USB драјверском стеку да зна како да комуницира са уређајем, које брзине подржава и које су опције конфигурације доступне.
Важан детаљ је тај USB уређај не би требало да мења своје дескрипторске информације док је повезанчак ни када промени стање напајања. Оно што се може десити јесте да приказује различите информације у зависности од тога да ли је повезан великом брзином или пуном брзином, али то се одлучује у тренутку повезивања.
Са стране контролера, хост добија овај дескриптор путем GET_DESCRIPTOR пренос контроле усмерен на уређајУ оперативном систему Windows, драјвери у режиму језгра (KMDF/UMDF/WDM) могу формално захтевати тај дескриптор путем URB-ова (USB блокова захтева) или API-ја оквира, али то је већ територија развоја драјвера, а не администрирање путем PowerShell-а.
Погледајте ИД УСБ хардвера помоћу графичких алата система Windows

Пре него што се позабавимо PowerShell-ом, вреди запамтити да Windows нуди неколико веома једноставних графичких начина за преглед HWID-ова било ког уређајаПосебно су корисни када вам је потребно само да идентификујете одређени уређај.
1. Управљач уређајима
Најбржи начин, без писања и једне линије кода, јесте да користите Виндовс Девице МанагерКомпатибилан је са било којом врстом хардвера, укључујући УСБ уређаје. складиштењештампачи, веб камере итд.
- Отворите Управљач уређајима притиском на Win + X и одабиром „Управитељ уређаја“ или претраживањем „devmgmt.msc“.
- Пронађите компоненту, на пример у „Контролери универзалне серијске магистрале“ или „Дискови“ ако је у питању УСБ диск.
- Кликните десним тастером миша на проблематични уређај и унесите својства.
- Идите на картицу Детаљније.
- У падајућем менију „Имовина“ изаберите ИД-ови хардвера.
Видећете листу низова; најспецифичнији обично укључује VID, PID, а понекад и серијски број или SUBSYS. То су низови које затим можете користити у претраге скрипти или драјвера, копирајући их тачно онаквима какви јесу.
2. Командна линија са WMIC-ом
Ако више волите конзолну опцију, али још не желите да се бавите PowerShell-ом, можете користити ВМИЦ (Застарело је у модерним верзијама, али ћете га и даље наћи на многим рачунарима):
wmic путања win32_pnpentity добија име, ИД уређаја
Ова команда приказује сви Plug and Play уређаји и њихов DeviceIDТо су управо ИД-ови хардвера који нас занимају. Затим их можете визуелно филтрирати или експортовати излаз у датотеку за обраду.
3. Апликације трећих страна (када је дозвољено)
У окружењима где је то дозвољено, уобичајено је користити алате као што су CPU-Z, Speccy или HWiNFO да би се добио комплетан рендгенски снимак система, укључујући HWID многих компоненти. Међутим, у многим компанијама та опција је забрањена, тако да PowerShell постаје швајцарски нож који прихватају безбедносне политике.
Преузмите ИД УСБ хардвера из PowerShell-а
PowerShell укључује веома моћне командлете за преглед и филтрирање информација о Plug and Play уређајима. За HWID потребе, најзанимљивији је... Get-PnpDeviceиако се старије WMI класе и даље користе у неким застарелим скриптама.
Наведите ИД-ове хардвера помоћу команде Get-PnpDevice
Да бисте видели идентификаторе свих активних уређаја на систему, можете користити:
Get-PnpDevice -PresentOnly | Select-Object -Property Name,InstanceId
Ова команда враћа табела са пријатељским именом уређаја и његовим InstanceId-омТај InstanceId је управо стринг хардверског ИД-а (или веома близу њега) који затим можете повезати са грешкама, системским догађајима или претрагама драјвера.
Ако желите да се фокусирате само на PCI уређајиНа пример, можете филтрирати помоћу:
Get-PnpDevice | Where-Object { $_.InstanceId -match '^PCI' } | Select-Object FriendlyName, InstanceId
А за USB уређаје можете користити сличан филтер на стрингу InstanceId, мењајући префикс:
Get-PnpDevice | Where-Object { $_.InstanceId -like 'USB\VID_*' } | Select-Object FriendlyName, InstanceId
Случајеви из стварног живота: Идентификација проблематичног УСБ диска по његовом ИД-у
Веома чест сценарио је следећи: Ваш рачунар се замрзава, проверавате прегледач догађаја и проналазите референцу на уређај као што је „USB\VID_1F75&PID_0917\8&31abfd78&0&3“Пролазите кроз Управитељ уређаја тражећи тај ИД и нема начина да знате шта је то тачно.
Практични пример: У овим ситуацијама, веома је корисно користити PowerShell за унакрсно референцирање информација. На пример, можете покушати да пронађете било који PnP уређај чији InstanceId почиње тим обрасцем:
Get-PnpDevice -InstanceId 'USB\VID_1F75*'
Ако ово не врати ништа (понекад се то дешава ако уређај више није повезан), можете проверити историју USB уређаја помоћу WMI-ја или, када је дозвољено, помоћу алата као што су УСБДевиев који приказују све уређаје који су се икада повезали, укључујући датуме и портове.
Погледајте некретнине: Ако добијете резултате, можете их проширити са:
Гет-ПнпДевице -Ид инстанце 'УСБ\ВИД_1Ф75*' | Гет-ПнпДевицеПроперти
Ово би требало да буде наведено сва PnP својства повезана са уређајемМеђутим, ако уређај није присутан или постоји проблем са дозволама, можете добити празне или делимичне резултате. Да бисте извезли информације у CSV датотеку, идеја би била:
Get-PnpDevice -InstanceId 'USB\VID_1F75*' | Get-PnpDeviceProperty | Export-Csv -Path 'DevDetails.csv' -NoTypeInformation
Ако CSV датотека изгледа празна, то скоро увек значи да ниједан уређај не одговара филтеру у том тренутку или да cmdlet није могао да прочита својства (због дозвола или зато што уређај не реагује).
Погледајте USB уређаје за складиштење повезане са WMI-јем
Још један типичан случај је жеља да се зна Који су УСБ дискови или флеш дискови тренутно повезани?Класична пречица у PowerShell-у је ослањање на WMI класу. Win32_DiskDrive Филтрирање по типу интерфејса:
Гет-ВмиОбјецт Вин32_ДискДриве | Где-Објецт { $_.ИнтерфејсТипе -ек 'УСБ' }
Ако желите нешто читљивије и извозљивије, можете пројектовати само релевантна поља користећи PSCustomObject:
Гет-ВмиОбјецт Вин32_ДискДриве | Где-Објецт { $_.ИнтерфејсТипе -еq 'УСБ' } | ФорЕах-Објецт {
[PSCustomObject]@{
ИД уређаја = $_.ИД уређаја
Модел = $_.Модел
Серијски = (Get-WmiObject Win32_PhysicalMedia | Where-Object { $_.Tag -eq $_.DeviceID }).СеријскиБрој
}
}
Овде се приказује сваки прилагођени објекат идентификатор уређаја, модел и физички серијски број (када произвођач то исправно прикаже). Ово је веома корисна основа за скрипте за залихе и праћење.
Аутоматски пратите и евидентирајте УСБ уређаје помоћу PowerShell-а
У корпоративним окружењима, веома је уобичајено да ИТ одељење жели централизовани регистар свих повезаних УСБ уређаја за сваку машину: који је уређај био у питању, када се повезао, са ког рачунара итд. Ово помаже у откривању неовлашћених уређаја, истраживању безбедносних инцидената и усклађивању са интерним политикама.
Флексибилан начин да се ово уради без додатних лиценци је монтирање un скрипта PowerShell скрипта која прикупља релевантне информације са сваког USB уређаја и шаље их на централни сервер путем REST API-јаНа основу претходног примера са WMI, шема би изгледала отприлике овако:
Гет-ВмиОбјецт Вин32_ДискДриве | Где-Објецт { $_.ИнтерфејсТипе -ек “УСБ” } | ФорЕах-Објецт {
[PSCustomObject]@{
ИД уређаја = $_.ИД уређаја
Модел = $_.Модел
Серијски = (Get-WmiObject Win32_PhysicalMedia | Where-Object { $_.Tag -eq $_.DeviceID }).СеријскиБрој
}
} | ConvertTo-Json | Invoke-RestMethod -Uri «http://servidorcentral/api/usblog» -Method Post
Овај блок Прикупља све дискове помоћу УСБ интерфејса, припрема објекте са кључним подацима и серијализује их у ЈСОН.Затим, са Инвоке-РестМетходПошаљите тај JSON на HTTP крајњу тачку на вашем серверу за евидентирање. Одатле, ваша машта (и безбедносни захтеви) преузимају контролу: можете додати име тима, корисника сесије, тачан датум и време итд.
За континуирано праћење, скрипта се обично комбинује са Windows планер задатака да се покреће при покретању система или пријављивању, или можете креирати услугу која прати системске догађаје везане за УСБ конекције и покреће пренос у реалном времену.
Направите једноставан REST API за евидентирање USB података
Да бисте примили податке које шаље PowerShell скрипта, потребан вам је мали Веб сервер са рутом спремном за прихватање POST захтева са JSON-омВеома брз начин да се то уради је коришћењем Питон са боцомшто вам омогућава да подесите крајњу тачку са неколико линија.
Основна идеја је следећа:
из фласке увоз Фласка, захтев, jsonify
апп = Фласк(__наме__)
@app.route('/api/usblog', methods=['POST'])
деф лог_усб_дата():
подаци = захтев.гет_јсон()
ако не подаци:
врати jsonify({"грешка": "Нису послати подаци"}), 400
са open("usb_log.txt", "a") као log_file:
log_file.write(f»{data}\n»)
врати jsonify({"порука": "Подаци успешно примљени"}), 200
ако __наме__ == '__маин__':
апликација.рун(хост='0.0.0.0′, порт=5000)
Овим ће се завршити сваки позив из ваших PowerShell скрипти додавање линије са подацима о УСБ уређају у датотеку usb_log.txtОчигледно је да ћете у стварном распоређивању желети да пошаљете те податке у базу података, додате аутентификацију, шифрујете саобраћај помоћу HTTPS-а итд., али као почетна тачка то је више него довољно.
Захтеви: Основни кораци за његово покретање и рад били би:
- Инсталирајте Фласк са пип инсталл боца на вашем Пајтон серверу.
- Сачувајте код у сервер.пи и покрените га са питхон сервер.пи.
- Конфигуришите URL у PowerShell скриптама да води ка http://IP_DEL_SERVIDOR:5000/api/usblog.
Од тог тренутка, сваки уређај који има дозволу за контакт са тим сервером моћи ће пошаљите свој инвентар УСБ уређаја периодично или по потреби.
Закажите покретање USB скрипти при покретању Windows-а
Да би цео овај систем био практичан, важно је да PowerShell скрипта ће се покренути аутоматски, а нико неће морати да се сети да је покрене.Windows нуди две уобичајене методе: Планер задатака и Покретна фасцикла.
Коришћење распореда задатака
Брзо подешавање: Са Планером задатака (ПланировсикМожете конфигурисати извршавање као одговор на различите системске догађаје:
- Отворите Планер задатака и изаберите „Креирај задатак“.
- На картици „Опште“ дајте име као што је „Праћење УСБ-а“ и изаберите „Покрени са највишим привилегијама“.
- У „Окидачима“ додаје један за „Када се систем покрене“ или „Када се пријавим“, у зависности од тога шта вас занима.
- У одељку „Радње“ изаберите „Покрени програм“ и покажите на поверсхелл.еке са параметрима типа -БезПрофила -ЗаобилажењеПолитикаИзвршавања -Датотека «C:\путања\скрипта.ps1».
- Сачувајте и проверите да ли је задатак омогућен.
Ово осигурава да Праћење почиње сваки пут када се опрема покрене и да скрипта може приступити свим потребним информацијама, под условом да има одговарајуће дозволе.
Коришћење фасцикле Home са .bat датотеком
Још једна једноставнија, мада мање детаљна, опција је креирање Бат. који позива PowerShell и смешта га у корисничку почетну фасциклу:
powershell.exe -NoProfile -ExecutionPolicy Bypass -Датотека «C:\path\del\script.ps1»
То сачувате као, на пример, tracking_usb.batи копирајте га на:
%APPDATA%\Microsoft\Windows\Старт мени\Програми\Покретање
Чим се корисник пријави, Windows ће покренути ту .bat датотеку и, са њом, PowerShell скрипту.То је корисно решење за мала окружења или када не желите да се бавите Планером задатака.
Праћење УСБ уређаја на удаљеним рачунарима помоћу PowerShell-а
У многим корпоративним мрежама, проблем није само у томе који се УСБ диск повезује са вашим рачунаром, већ да бисте имали глобални преглед повезаних уређаја на више рачунараКада се не могу користити агенти треће стране, комбинација PowerShell Remoting-а и WMI-ја остаје веома валидан приступ.
Типичан пример скрипте за навођење УСБ уређаја на више рачунара изгледао би отприлике овако:
$рачунар = «РАЧУНАР1»,»РАЧУНАР2»,»РАЧУНАР3»
$namespace = "root\CIMV2"
Get-WmiObject -Class Win32_USBControllerDevice -ComputerName $computer -Namespace $namespace |
За сваки објекат { [wmi]($_.Dependent) } |
Сортирање-Произвођач,Опис,ИД уређаја |
Формат-Табела -ГруписањеПо Опису произвођача,Услузи,ИДу уређаја |
Out-File -Append -FilePath C:\USB\usblist.txt
Идеја је: упитајте везу између USB контролера и уређаја на сваком удаљеном рачунару, разрешите својство Dependent у стварну WMI инстанцу, а затим испишите сортиране информације у текстуалну датотекуАко датотека остане празна, потребно је проверити дозволе, удаљени приступ, заштитни зид и, наравно, синтаксу скрипте (размаци или лоше затворени наводници су класик).
Са добром структуром ове врсте скрипте, можете постићи консолидовани инвентар УСБ уређаја по тимугруписани по произвођачу и опису, без зависности од софтвера треће стране.
Коришћење USB ID-а за проналажење и одржавање драјвера
Поред безбедносног аспекта, познавање и управљање ИД хардвера је кључан за проналажење одговарајућих драјверапосебно када Windows не успе да пронађе генеричку верзију или након ажурирања система које остави уређај „мртвим“.
Хијерархијски образац: ИД-ови овог типа обично прате хијерархијски образац, посебно код PCI/PCIe уређаја:
- VEN_XXXX Идентификујте произвођача чипа.
- DEV_XXXX Наведите конкретан модел уређаја.
- SUBSYS_XXXXXXXXX детаљи варијанте асемблера, регион итд.
За USB, налазимо ланце као што су USB\VID_XXXX&PID_YYYY а понекад и са серијским бројем. Када уређај престане да ради након ажурирања система Windows, Копирајте тачан HWID и унесите га у претраживач произвођача или у базе података специјализована То је веома прецизан начин да пронађете прави драјвер, чак и за старији хардвер.
Алати попут Снаппи Дривер Инсталлер Оригин Решења за управљање комерцијалним контролерима често се ослањају управо на ове идентификаторе за прецизно упарите драјвер уређајаПостоје и локални претраживачи који могу да претражују стотине .inf датотека користећи HWID-ове уграђене у њих, што је одлично када имате библиотеку преузетих драјвера, али не можете да се сетите који чему одговара.
Користан трик за најорганизованије људе је Водите табелу са колонама за VEN, DEV, SUBSYS, опис и путању драјвераСа функцијама попут MID() у Екселу можете аутоматски издвојити та поља из HWID стринга, што вам на дужи рок штеди много сати покушаја и грешака када се бавите лоше документованим хардвером.
Додатни алати за рад са USB ID-овима
Иако је фокус овде на ономе што можете да урадите са PowerShell и уграђени услужни програми за WindowsКорисно је знати неке помоћне алате — посебно ако ваше окружење дозвољава њихову инсталацију — који олакшавају рад са USB уређајима.
Прегледач УСБ уређаја (УСБВиев) од Мајкрософта
Мајкрософт нуди услужни програм бесплатно. Прегледач USB уређаја (USBView), укључен у Windows Driver Kit. Пружа приказ стабла свих USB драјвера и уређаја присутних у систему и приказује idVendor, idProduct и друга поља дескриптора уређаја на веома јасан начин.
Кораци: Основни кораци су:
- Инсталирајте одговарајући пакет Windows Driver Kit и пронађите га USBView.exe (обично у путањи дебагера, на пример, Debuggers\x64).
- Покрените га и изаберите УСБ уређај у стаблу са леве стране.
- Проверите поља у десном панелу idVendor-а и idProduct-а, заједно са остатком дескриптора.
Ако развијате драјвере, на пример са Чаробњак за развој VISA драјвераОви подаци су неопходни да би се возачу рекло које уређаје да користи на основу њиховог VID и PID.
Онлајн базе података USB ID-а
Када физички немате уређај при руци, али знате његово име или део његовог идентификатора, можете прибећи и јавне базе података USB ID-аНа овим типовима сајтова можете претраживати по моделу, марки или чак по VID/PID фрагментима, а они враћају званичне вредности ИД добављача и ИД производа регистрован за тај уређај.
Ово је посебно корисно када Имате делимични HWID или Windows даје само генерички опис.и потребно је да потврдите који VID/PID одговара пре него што потражите компатибилни драјвер или примените политику блокирања уређаја помоћу ID-а.
На крају крајева, течно познавање USB ID-ова и других хардверских идентификатора претвара вас у неку врсту „системског детектива“: Можете пратити који је уређај изазвао пад система, који је УСБ диск био повезан са којим рачунаром и када, или зашто је драјвер престао да се учитава након ажурирања.Са PowerShell-ом као централним алатом, у комбинацији са Device Manager-ом, WMI-јем, неким специјализованим услужним програмима и, ако је потребно, малим Flask сервером, имате све што вам је потребно за праћење и контролу USB екосистема вашег окружења без ослањања на гломазна решења трећих страна или непоуздане претпоставке.
Страствени писац о свету бајтова и технологије уопште. Волим да делим своје знање кроз писање, и то је оно што ћу радити на овом блогу, показивати вам све најзанимљивије ствари о гаџетима, софтверу, хардверу, технолошким трендовима и још много тога. Мој циљ је да вам помогнем да се крећете у дигиталном свету на једноставан и забаван начин.