Просмотр файлов на фотокамере с помощью PowerShell

Если я подключу свою цифровую камеру через USB, проводник Windows перечислит ее под компьютером в качестве устройства. Я могу просматривать его с помощью проводника, просматривать папки, свойства файлов и т.д., А также копировать/удалять файлы.

Все это означает, что камера не является запоминающим устройством (в этом случае я считаю, что камера будет отображаться в виде флеш-накопителя с назначенной буквой диска, что упростит).

Есть ли у меня способ доступа и просмотра файлов и папок на камере с помощью Windows PowerShell? Насколько я могу судить, никакая буква диска (автоматически) не назначается устройству.

Я не ищу обходные пути - я могу скопировать файлы с помощью explorer, а не проблемы. Я прошу, потому что я хочу поиграть с PowerShell: -)

Спасибо

UPDATE:

Мне удалось получить объект Win32PnPEntity камеры, используя следующее:

Get-WmiObject Win32_USBControllerDevice | ForEach-Object { $_; [Wmi]$_.Dependent }

Далее следует Get-WmiObject win32_pnpentity -filter "name='Canon PowerShot A480'", используя имя, которое я получил из предыдущей команды (PNPDeviceID, вероятно, был бы лучшим выбором, но имя было легче ввести: P)

Однако, я не знаю, могу ли я сделать что-нибудь полезное с этим объектом Win32PnPEntity.

Ответ 1

Вы можете объединить информацию из двух следующих статей: http://blogs.msdn.com/b/powershell/archive/2009/01/10/get-usb-using-wmi-association-classes-in-powershell.aspx

Это позволит вам получить идентификатор устройства, связанный с вашим конкретным USB-устройством (например, из свойства Name).

Затем используйте WMI для доступа к файлам: Как создать PowerShell script для копирования файла на USB-накопитель?

Ответ 2

Я только что создал PowerShell script, способный сканировать мой Android-устройство, подключенное к USB, полученное на следующем веб-сайте:

http://blogs.technet.com/b/heyscriptingguy/archive/2013/04/26/use-powershell-to-work-with-windows-explorer.aspx

Я использую следующие API:

  • Активация объекта Shell.Application COM:

$o = New-Object -com Shell.Application

  1. Получить определенное пространство имен, то есть список корневых папок:

$folder = $o.NameSpace(0x11)

0x11 относится к константе перечисления ShellSpecialFolderConstants.ssfDRIVES; см. https://msdn.microsoft.com/en-us/library/windows/desktop/bb774096(v=vs.85).aspx

  1. Рекурсивно пересечь эту папку $:

$folder.GetFolder() и $folder.Items

См. мой полный рабочий стол: https://gist.github.com/cveld/8fa339306f8504095815

Ответ 3

Я бы начал с запуска get-PSDrive и посмотрел, появляется ли камера.

Если это так, вы должны иметь возможность рассматривать его как обычный диск и использовать командлет экземпляра-копии для перемещения элементов:

Ссылка: http://technet.microsoft.com/en-us/library/dd347638.aspx

С уважением Arcass