Bug em classes do PowerShell quando o script está em uma pasta que contém uma aspa simples?

1

Os scripts do PowerShell do meu cliente não estão funcionando para um novo usuário que tenha um aspa simples em seu nome - o que significa que o caminho do seu perfil é chamado "C: \ Users \ Liam'OReilly". Parece ser um bug no sistema de classes do PowerShell.

Crie uma pasta chamada "C: \ Temp'Test" e adicione Test.ps1:

Write-Host "Test"
Class MyClass {}

Execute este script e você receberá este erro:

The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047) At line:1 char:1 + & 'C:\Temp''Test\Test..ps1' + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) [], FileLoadException + FullyQualifiedErrorId : System.IO.FileLoadException

Renomeie a pasta como simplesmente C: \ Test e ela será executada sem erros.

Alguém tem uma solução alternativa e qual seria a melhor maneira de relatar esse bug?

Minha solução agora (como o usuário inicia na segunda-feira) é remover o caractere de aspas simples de seu nome de exibição no Office 365, o que não é o ideal.

    
por munrobasher 17.05.2018 / 12:23

1 resposta

0

A postagem do StackOverflow Como acessar os caminhos de arquivo no Powershell contendo caracteres especiais? / a> tem três soluções para o problema:

  1. Use o novo caractere de escape % para pare a análise normal da linha de comando até o final da linha para não corresponder às cotações, não parar no ponto-e-vírgula e não expandir as variáveis do PowerShell. As variáveis de ambiente ainda são expandidas ao usar a sintaxe cmd.exe (por exemplo, %TEMP% ).

  2. Escreva o nome do arquivo em um arquivo temporário e use-o de lá.

  3. Use o símbolo de backtick (') para escapar do caractere especial. Por exemplo:

    $dir = "C:\folder'$name\dir"
    
por 17.05.2018 / 13:13