Всем доброго дня! Подскажите плиз по такой проблеме:
Нужно найти в определенном разделе реестра винды ключ с нужным значением (нужен именно павершелл т.к. нужно будет использовать данный скрипт для поиска в разных ситуациях разных значений)
Нагуглить часть ответа несложно:
Допустим мне нужно найти некое USB устройство, в ветке HKLM\SYSTEM\ControlSet001\Enum\USB\
Get-ChildItem -path HKLM:\SYSTEM\ControlSet001\Enum\USB\ -recurse -ErrorAction SilentlyContinue
Дальше получаю длинный вывод чтото вида:
Hive: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB\VID_13FE&PID_4200\070189C3CBEAEA48
Name Property
---- --------
Device Parameters EnumerationRetryCount : 0
SymbolicName : \??\USB#VID_13FE&PID_4200#070189C3CBEAEA48#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
Hive: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB\VID_13FE&PID_4200\070189C3CBEAEA48\Device Parameters
Name Property
---- --------
Ceip DeviceInformation : 0
PortInterconnectType : 0
TroubleshooterRootCauseId : 0
e5b3b5ac-9725-4f78-963f-03dfb1 D3ColdSupported : 1
d828c7
Hive: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB
Name Property
---- --------
VID_8564&PID_1000
Hive: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB\VID_8564&PID_1000
Name Property
---- --------
04FAQEBHBA2Q82FM DeviceDesc : @usbstor.inf,%genericbulkonly.devicedesc%;USB Mass Storage Device
LocationInformation : Port_#0009.Hub_#0001
Capabilities : 148
Address : 9
ContainerID : {4c4eb887-fa5d-5a0f-bc1c-b896a1a303cf}
HardwareID : {USB\VID_8564&PID_1000&REV_1100, USB\VID_8564&PID_1000}
CompatibleIDs : {USB\Class_08&SubClass_06&Prot_50, USB\Class_08&SubClass_06, USB\Class_08}
ClassGUID : {36fc9e60-c465-11cf-8056-444553540000}
Service : USBSTOR
Driver : {36fc9e60-c465-11cf-8056-444553540000}\0007
Mfg : @usbstor.inf,%generic.mfg%;Compatible USB storage device
ConfigFlags : 0
Hive: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB\VID_8564&PID_1000\04FAQEBHBA2Q82FM
Name Property
---- --------
Device Parameters EnumerationRetryCount : 0
SymbolicName : \??\USB#VID_8564&PID_1000#04FAQEBHBA2Q82FM#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
Hive: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB\VID_8564&PID_1000\04FAQEBHBA2Q82FM\Device Parameters
Name Property
---- --------
Ceip DeviceInformation : 0
PortInterconnectType : 0
TroubleshooterRootCauseId : 0
e5b3b5ac-9725-4f78-963f-03dfb1 D3ColdSupported : 1
d828c7
Только вывод намного больше, и как мне из него получить нужное?
Как мне из вывода получить любое нужное мне значение? Например Hive? Property?
(Get-ChildItem -path HKLM:\SYSTEM\ControlSet001\Enum\USB\ -recurse -ErrorAction SilentlyContinue).gettype() - говорит что это массив:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
Только вот скольки мерный?
Т.е. к его элементам можно обратится как к элементам массива, делаю:
(Get-ChildItem -path HKLM:\SYSTEM\ControlSet001\Enum\USB\ -recurse -ErrorAction SilentlyContinue)[1]
Получаю:
Hive: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB\ROOT_HUB30
Name Property
---- --------
4&9f1d25&0&0 Capabilities : 128
Address : 0
ContainerID : {00000000-0000-0000-ffff-ffffffffffff}
HardwareID : {USB\ROOT_HUB30&VID8086&PIDA36D&REV0010, USB\ROOT_HUB30&VID8086&PIDA36D, USB\ROOT_HUB30}
CompatibleIDs : {}
ClassGUID : {36fc9e60-c465-11cf-8056-444553540000}
Service : USBHUB3
DeviceDesc : @usbhub3.inf,%usbhub3.roothubdevicedesc%;USB Root Hub (USB 3.0)
Driver : {36fc9e60-c465-11cf-8056-444553540000}\0001
Mfg : @usbhub3.inf,%generic.mfg%;(Standard USB HUBs)
ConfigFlags : 0
ParentIdPrefix : 5&34c36748&0
Дальше пробую:
(Get-ChildItem -path HKLM:\SYSTEM\ControlSet001\Enum\USB\ -recurse -ErrorAction SilentlyContinue)[1].Property
Получаю:
Capabilities
Address
ContainerID
HardwareID
CompatibleIDs
ClassGUID
Service
DeviceDesc
Driver
Mfg
ConfigFlags
ParentIdPrefix
Но без значений, а мне допустим надо узнать значение каждого Property (Как в выводе выше)