1

Сценарии PowerShell моего клиента не работают для нового пользователя, в имени которого есть одинарная кавычка, что означает, что путь к профилю называется «C:\Users\Liam'OReilly». Кажется, это ошибка в системе классов PowerShell.

Создайте папку с именем «C:\Temp'Test» и добавьте Test.ps1:

Write-Host "Test"
Class MyClass {}

Выполните этот скрипт, и вы получите эту ошибку:

Указанное имя сборки или кодовая база недопустимы. (Исключение из HRESULT: 0x80131047) В строке: 1 символ: 1 + & 'C:\Temp''Test\Test..ps1' + ~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ + CategoryInfo: OperationStopped: (:) [], FileLoadException + FullyQualifiedErrorId: System.IO.FileLoadException

Переименуйте папку как просто C:\Test, и она будет работать без ошибок.

Кто-нибудь получил обходной путь, и что будет лучшим способом сообщить об этой ошибке?

Мой обходной путь сейчас (так как пользователь начинает в понедельник) состоит в удалении символа одинарных кавычек из их отображаемого имени в Office 365, что не идеально.

1 ответ1

0

Пост StackOverflow Как получить доступ к путям файлов в Powershell, содержащих специальные символы? имеет три решения проблемы:

  1. Используйте новый escape-символ % чтобы остановить обычный синтаксический анализ командной строки до конца строки, чтобы не совпадать с кавычками, не останавливаться на точке с запятой и не раскрывать переменные PowerShell. Переменные среды по-прежнему раскрываются при использовании синтаксиса cmd.exe (например, %TEMP%).

  2. Запишите имя файла во временный файл и используйте его оттуда.

  3. Используйте символ backtick (`) для экранирования специального символа. Например :

    $dir = "C:\folder`$name\dir"
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .