Просмотр файловой системы устройства Android в режиме MTP через powershell с помощью wmiobject
Я просмотрел несколько постов и статей, в которых обсуждается использование usb-диска powershell access, например:
- Просмотр файлов на камере с помощью PowerShell
- Перечислите все устройства, разделы и тома в Powershell
- https://superuser.com/a/377008/9546
Но никто из них на самом деле не "отвечает" на вопрос. В последнем сообщении также говорится, что никто никогда не создавал решение MTP из-за определенных ограничений, которые имеет сам MTP (протокол).
Один из маршрутов, по которому я пошел, ударил стену; Я не знаю, что делать дальше (с объектом wmi). Я использовал следующую программу vbscript и запомнил идентификатор устройства, который меня интересует, полученный здесь:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colDevices = objWMIService.ExecQuery _
("Select * From Win32_USBControllerDevice")
For Each objDevice in colDevices
strDeviceName = objDevice.Dependent
strQuotes = Chr(34)
strDeviceName = Replace(strDeviceName, strQuotes, "")
arrDeviceNames = Split(strDeviceName, "=")
strDeviceName = arrDeviceNames(1)
Set colUSBDevices = objWMIService.ExecQuery _
("Select * From Win32_PnPEntity Where DeviceID = '" & strDeviceName & "'")
For Each objUSBDevice in colUSBDevices
Wscript.Echo objUSBDevice.Description
Next
Next
Я как бы добавил это в приведенную ниже команду powershell, чтобы получить объект wmi:
Get-WmiObject win32_pnpentity -filter "DeviceID='<the_device_id>'"
Теперь я думаю, что у меня есть объект WMI. Но что я могу с этим сделать.
Исходя из последнего поста, на который я ссылался, у меня есть предчувствие, что есть COM-способ решения этой проблемы Как мы должны это сделать?
1 ответ
Чтобы найти устройства MTP в Power Shell, используйте эту команду:
Get-WmiObject -class win32_pnpentity -computername localhost | where-object {$_.HardwareID -like "*MTP*"} | format-list
Пример вывода для Samsung Galaxy S5
__GENUS : 2
__CLASS : Win32_PnPEntity
__SUPERCLASS : CIM_LogicalDevice
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_PnPEntity.DeviceID="USB\\VID_04E8&PID_6860&MS_COMP_MTP&SAMSUNG_ANDROID\\6&8F62A49&0&0000"
__PROPERTY_COUNT : 24
__DERIVATION : {CIM_LogicalDevice, CIM_LogicalElement, CIM_ManagedSystemElement}
__SERVER : -*- Computer Name -*-
__NAMESPACE : root\cimv2
__PATH : \\-*- Computer Name -*-\root\cimv2:Win32_PnPEntity.DeviceID="USB\\VID_04E8&PID_6860&MS_COMP_MTP&SAMSUNG_ANDROID\\6&8F62A49&0&0000"
Availability :
Caption : -*- device display name in explorer -*-
ClassGuid : {eec5ad98-8080-425f-922a-dabf3de3f69a}
CompatibleID : {USB\MS_COMP_MTP, USB\Class_06&SubClass_01&Prot_01, USB\Class_06&SubClass_01, USB\Class_06...}
ConfigManagerErrorCode : 0
ConfigManagerUserConfig : False
CreationClassName : Win32_PnPEntity
Description : SM-G900P
DeviceID : USB\VID_04E8&PID_6860&MS_COMP_MTP&SAMSUNG_ANDROID\6&8F62A49&0&0000
ErrorCleared :
ErrorDescription :
HardwareID : {USB\VID_04E8&PID_6860&REV_0400&MS_COMP_MTP&SAMSUNG_Android, USB\VID_04E8&PID_6860&MS_COMP_MTP&SAMSUNG_Android, USB\SAMSUNG_MOBILE&MS_COMP_MTP&SAMSUNG_Android, USB\SAMSUNG_MOBILE&MI_00...}
InstallDate :
LastErrorCode :
Manufacturer : Samsung Electronics Co., Ltd.
Name : -*- device display name in explorer -*-
PNPDeviceID : USB\VID_04E8&PID_6860&MS_COMP_MTP&SAMSUNG_ANDROID\6&8F62A49&0&0000
PowerManagementCapabilities :
PowerManagementSupported :
Service : WUDFRd
Status : OK
StatusInfo :
SystemCreationClassName : Win32_ComputerSystem
SystemName : -*- Computer Name -*-