Vamos falar sobre como acessar e copiar arquivos de dispositivos móveis Android, sejam celulares o tablet. Talvez seja possível executar o mesmo procedimento para dispositivos IOS, porém não foi testado.

A forma que encontramos para copiar arquivos de telefones foi utilizando mtp. Além disso é necessário que o equipamento, depois do cabo usb conectado, esteja autorizado que o computador acesse seus arquivos. A forma mais rápida de conferir esse acesso é navegar pelo Explorer e verificar se existe acesso aos mesmos.

Em nosso exemplo:

  • Iremos conectar em dispositivos Android (filtrando *\usb*_mtp&*_android#*), caso seja um dispositivo diferente é possível executar manualmente parte do arquivo, listar os tipos de dispositivos e alterar o filtro Where-Object.
  • Iremos copiar a pasta Card, que é todo o cartão de memória, mas poderia ser apenas a pasta Card/Download ou outra qualquer.
# FONTE: https://github.com/nosalan/powershell-mtp-file-transfer
Add-Type -AssemblyName Microsoft.VisualBasic
# sourceDirPath é o nome da pasta (que aparece no explorer)
$sourceDirPath = “Card
#$BackupPath = (Get-Location).Path
[Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”) | Out-Null
[System.Windows.Forms.Application]::EnableVisualStyles()
$browse = New-Object System.Windows.Forms.FolderBrowserDialog
$browse.ShowNewFolderButton = $false
$browse.Description = “Select a directory”
If ($browse.ShowDialog() -eq “Cancel”)
{
Break
}
$BackupPath = $browse.Selected
$sourceMtpDir = $null
$o = New-Object -com Shell.Application
$rootComputerDirectory = $o.NameSpace(0x11)
$sourceMtpDir = $rootComputerDirectory.Items() | Where-Object {$_.Path -like “*\usb*_mtp&*_android#*“} | select -First 1
while($sourceMtpDir -eq $null)
{
[System.Windows.MessageBox]::Show(“Telefone não encontrado”, “Erro”, “OK” ,”Error”) | Out-Null

Exit
}
foreach($pathSegment in ($sourceDirPath -split “\”))
{
$sourceMtpDir = $sourceMtpDir.GetFolder.Items() | Where-Object {$.Name -eq $pathSegment} | select -First 1
if($sourceMtpDir -eq $null)
{
[System.Windows.MessageBox]::Show(“Pasta $sourceDirPath não encontrada, programa CANCELADO”, “Erro”, “OK” ,”Error”) | Out-Null
Exit
}
}
[System.Windows.MessageBox]::Show(“Só clique em OK depois que o tablet estiver conectado, desbloqueado e autorizado para acesso aos arquivos”, “Inicio do Backup”, “OK” ,”Information”) | Out-Null
New-Item -ItemType “directory” -Force $BackupPath | out-null
$destDirShell = (new-object -com Shell.Application).NameSpace($BackupPath)
$fullDirPath = “”
$directory = $sourceMtpDir.GetFolder
while($directory -ne $null)
{
$fullSourceDirPath = -join($directory.Title, ‘\’, $fullDirPath)
$directory = $directory.ParentFolder;
}
foreach ($item in $sourceMtpDir.GetFolder.Items())
{
$fullFilePath = Join-Path -Path $BackupPath -ChildPath $item.Name
$destDirShell.CopyHere($item)
}
[System.Windows.MessageBox]::Show(“Arquivos copiados com sucesso”, “Fim do Backup”, “OK” ,”Information”) | Out-Null

Fontes/Referências

https://github.com/nosalan/powershell-mtp-file-transfer

Mais Informações

Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.

Entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria
Categorias: Soluções Microsoft