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.