O cmdlet Get-Content
com as opções -Encoding Byte
e -Tail
fornece o que você deseja comparar no PowerShell. Assumindo que é aí que você falha.
Há alguns dias, decidi desfragmentar e otimizar meu disco rígido externo de 2 TB usando o Auslogics Defragmenter. Agora, um pouco de fundo aqui. A partição que eu desfragmentei foi uma partição de 1,8 TB criptografada pela VeraCrypt, uma bifurcação da TrueCrypt. Depois que a desfragmentação foi concluída, descobri que vários arquivos foram corrompidos. Os arquivos em que eu poderia detectar a corrupção foram todos os arquivos compactados, compactados usando a compactação padrão do Windows 10. Abri os arquivos no WinHex e vi uma coisa curiosa: o final de todos esses arquivos corrompidos tinha um bloco de seqüência "DF DF DF". Aqui está a captura de tela do problema. Por favor, note que, embora a imagem mostre que é um arquivo de arco, ainda era compactado pela compactação do Windows. O curioso é que, embora os arquivos tivessem esses blocos DF, uma Busca Binária da partição montada não produziu nenhuma sequência.
Agora quero criar um arquivo em lote que:
Eu tentei resolver isso usando o script Powershell, mas não tive sucesso. Acho que abordar o problema na plataforma Linux seria muito mais fácil, mas não tenho ideia de como fazer isso. Qualquer ajuda ou sugestão seria muito apreciada.
Nota adicional: Muitos disseram que a pesquisa binária da partição montada foi mal sucedida devido ao fato de que a partição é criptografada. Isto é errado. Eu montei a partição antes da pesquisa. Assim, a pesquisa não foi em dados RAW do disco rígido, mas os dados da partição não criptografada.
Detalhes adicionais: SO: Windows 10 Professional X64 / Ubuntu 14.04 x64 Sistema de arquivos: NTFS
Get-ChildItem -recurse -file -Attributes Compressed -path $Path | Foreach-Object -Process { if ((Get-Content -Tail 1 -encoding String -literalpath $_.fullname).endswith("ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß")) { Write-Output "$($_.Name) 't $($_.FullName) 't $($_.length)"} }
Simples um forro. Basicamente baseado no que kRush disse. Substitua $ Path pelo caminho correto.