1
resposta

[Dúvida] powershell não reconhece o caminho

Eu tive o seguinte erro no powershell:

Get-Content : Não é possível localizar o caminho 'C:\Users\Usuário\Desktop\backDoor\alura\PowerShell_parte2\shaFile.PS1' porque ele não existe. No C:\Users\Usuário\Desktop\backDoor\alura\PowerShell_parte2\shaFile.PS1:2 caractere:20

  • $fileContent = Get-Content $filePath
    
  •                ~~~~~~~~~~~~~~~~~~~~~
    
    • CategoryInfo : ObjectNotFound: (C:\Users\Usuár...te2\shaFile.PS1:String) [Get-Content], ItemNotFoundException
    • FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

Exceção ao chamar "GetBytes" com "1" argumento(s): "Matriz não pode ser nula. Nome do parâmetro: chars" No C:\Users\Usuário\Desktop\backDoor\alura\PowerShell_parte2\shaFile.PS1:3 caractere:5

  • $fileBytes = [System.Text.Encoding]::UTF8.GetBytes($fileContent)
    
  • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    • CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    • FullyQualifiedErrorId : ArgumentNullException

Várias sobrecargas ambíguas encontradas para "ComputeHash" e a contagem de argumentos: "1". No C:\Users\Usuário\Desktop\backDoor\alura\PowerShell_parte2\shaFile.PS1:7 caractere:5

  • $hash = $sha1.ComputeHash($fileBytes)
    
  • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    • CategoryInfo : NotSpecified: (:) [], MethodException
    • FullyQualifiedErrorId : MethodCountCouldNotFindBest

Isso acontece por causa da linguagem do meu pc? Parece que ele não entende os caracteres do português. Como eu faço pra ele reconhecer o caminho corretamente?

1 resposta

Oi, Laura!

Parece que você está enfrentando um problema com o PowerShell não reconhecendo o caminho do arquivo devido a caracteres especiais no nome do usuário. Isso pode realmente acontecer por causa da codificação dos caracteres.

Aqui estão algumas sugestões para resolver o problema:

  1. Verifique o Caminho do Arquivo: Certifique-se de que o caminho do arquivo está correto e que o arquivo realmente existe nesse local. Às vezes, um pequeno erro de digitação pode causar esse problema.

  2. Use o Caminho Completo: Tente usar o caminho completo do arquivo sem variáveis para ver se o problema persiste. Por exemplo:

    $filePath = "C:\Users\Usuário\Desktop\backDoor\alura\PowerShell_parte2\shaFile.PS1"
    $fileContent = Get-Content $filePath
    
  3. Codificação dos Caracteres: Pode ser que o PowerShell esteja tendo problemas com a codificação dos caracteres especiais. Uma abordagem seria usar o formato 8.3 do nome do arquivo, que é uma versão mais curta e compatível com DOS. Para encontrar o nome 8.3 do arquivo, você pode usar o comando dir /x no prompt de comando (cmd). Por exemplo:

    dir /x C:\Users\Usuário\Desktop\backDoor\alura\PowerShell_parte2\
    

    Isso exibirá o nome curto do arquivo, que você pode usar no seu script.

  4. Substitua Caracteres Especiais: Outra abordagem seria substituir caracteres especiais no caminho do arquivo por suas representações Unicode. No entanto, isso pode ser mais complicado e menos prático.

Aqui está um exemplo prático de como você pode tentar resolver isso usando o caminho completo e verificando se o arquivo realmente existe:

$filePath = "C:\Users\Usuário\Desktop\backDoor\alura\PowerShell_parte2\shaFile.PS1"

if (Test-Path $filePath) {
    $fileContent = Get-Content $filePath
    $fileBytes = [System.Text.Encoding]::UTF8.GetBytes($fileContent)
    $sha1 = New-Object System.Security.Cryptography.SHA1Managed
    $hash = $sha1.ComputeHash($fileBytes)
    Write-Host "Hash: $hash"
} else {
    Write-Host "Caminho do arquivo não encontrado: $filePath"
}

Espero ter ajudado e bons estudos!