Просмотр файлов на фотокамере с помощью 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
- Получить определенное пространство имен, то есть список корневых папок:
$folder = $o.NameSpace(0x11)
0x11 относится к константе перечисления ShellSpecialFolderConstants.ssfDRIVES; см. https://msdn.microsoft.com/en-us/library/windows/desktop/bb774096(v=vs.85).aspx
- Рекурсивно пересечь эту папку $:
$folder.GetFolder() и $folder.Items
См. мой полный рабочий стол:
https://gist.github.com/cveld/8fa339306f8504095815
Ответ 3
Я бы начал с запуска get-PSDrive и посмотрел, появляется ли камера.
Если это так, вы должны иметь возможность рассматривать его как обычный диск и использовать командлет экземпляра-копии для перемещения элементов:
Ссылка:
http://technet.microsoft.com/en-us/library/dd347638.aspx
С уважением
Arcass