Pieter Müller
Pieter Müller

Reputation: 4693

Browse files on camera using PowerShell

If I connect my digital camera via USB, Windows Explorer lists it under Computer as a device. I can browse it using Explorer, see folders, file properties etc, and copy/delete files.

This is all without setting the camera to be a storage device (in which case I believe the camera will show up as a flash drive, with an assigned drive letter, making this easy).

Is there a way for me to access and browse the files and folders on the camera using Windows PowerShell? As far as I can tell, no drive letter is (automatically) assigned to the device.

I'm not looking for workarounds - I can copy the files with explorer, not problem. I'm asking because I want to play around with PowerShell :-)

Thanks

UPDATE:

I've managed to get a Win32PnPEntity object of the camera using the following:

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

Followed by Get-WmiObject win32_pnpentity -filter "name='Canon PowerShot A480'" using the name I got from the previous command (PNPDeviceID would probably be a better choice but the name was easier to type :P )

However, I don't know if I can do anything useful with that Win32PnPEntity object.

Upvotes: 14

Views: 11276

Answers (3)

David Brabant
David Brabant

Reputation: 43549

You can combine information from the two following articles: https://devblogs.microsoft.com/powershell/get-usb-using-wmi-association-classes-in-powershell/

This will allow you to retrieve the device ID associated with your specific USB device (from the Name property, for example).

Then use WMI for accessing the files: How can I create a PowerShell script to copy a file to a USB flash drive?

Upvotes: 5

Carl in 't Veld
Carl in 't Veld

Reputation: 1503

I have just created a PowerShell script that is able to crawl my usb attached Android device, derived from the following website:

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

I am using the following APIs:

  1. Instantiation of a Shell.Application COM object:

$o = New-Object -com Shell.Application

  1. Get a specific Namespace, i.e. the list of root folders:

$folder = $o.NameSpace(0x11)

0x11 refers to the enum constant ShellSpecialFolderConstants.ssfDRIVES; see https://msdn.microsoft.com/en-us/library/windows/desktop/bb774096(v=vs.85).aspx

  1. Recursively traverse this $folder:

$folder.GetFolder() and $folder.Items

See my complete working gist: https://gist.github.com/cveld/8fa339306f8504095815

Upvotes: 5

Arcass
Arcass

Reputation: 932

I'd start by running get-PSDrive and see if the camera shows up.

If it does, you should be able to treat it as a normal drive and use the copy-item cmdlet to move the items:

Reference: http://technet.microsoft.com/en-us/library/dd347638.aspx

regards Arcass

Upvotes: -1

Related Questions