Как создать профиль PowerShell, если путь к моему профилю содержит апостроф? - PullRequest
2 голосов
/ 21 декабря 2010

Я пытаюсь настроить профиль PowerShell, чтобы все мои машины имели общий профиль. Я заставляю профиль каждой машины запускать сценарий в своем дропбоксе, чтобы я мог легче обновить все из них.

Мне показалось, что проблема в том, что я плохо знаю синтаксис точечного источника, но оказывается, что PowerShell действительно не нравится, что путь к моей папке с документами имеет апостроф. Полный путь:

d:\Owen's Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Если я удаляю этот файл, PowerShell запускается нормально (конечно, без необходимых изменений). Если я создаю этот файл, при запуске PowerShell выдается ошибка:

The string starting:
At line:1 char:75
+ . 'D:\Owen`'s Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 <<<< '
is missing the terminator: '.
At line:1 char:76
+ . 'D:\Owen`'s Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1' <<<<
    + CategoryInfo          : ParserError: (:String) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString

Это не моя вина, потому что сам скрипт пуст. Удаление пустого файла приводит к его исчезновению, создание нового файла приводит к возвращению ошибки. Конечно, Microsoft ожидала пути к профилю с апострофами?

Обновление Crud. Похоже, старая проблема. Может быть, нет обходного пути. (

Обновление 2 У меня был разговор с @ Lee_Holmes в Twitter об этом. По-видимому, это было исправлено в какой-то супер-удивительной внутренней версии Microsoft, но нет доступных исправлений и нет расписания для исправлений, поскольку PSH теперь является компонентом Windows. Это делает ответ Романа Кузьмина ниже наиболее подходящего ответа (используйте один из глобальных профилей) или, возможно, «переименуйте папку« Мои документы »», которая еще не упоминалась.

Ответы [ 3 ]

3 голосов
/ 21 декабря 2010

Сообщается и предположительно признается аналогичная ошибка: Ошибки Powershell с апострофом в пути

Сообщение об ошибке отличается, хотя, из-за другой версии PowerShell, более вероятно.

Возможно, прямого обходного пути нет: этот ошибочный вызов не находится под нашим контролем.Если переименование проблемного каталога не является возможным вариантом, возможно, альтернативное расположение профиля может быть подходящим решением.Попробуйте установить в своем профиле значение $PsHome.

> man about_profiles
...
For example, the Windows PowerShell console supports the following basic
profile files. The profiles are listed in precedence order. The first
profile has the highest precedence. 

Description                Path
-----------                ----
Current User, Current Host $Home\[My ]Documents\WindowsPowerShell\Profile.ps1
Current User, All Hosts    $Home\[My ]Documents\Profile.ps1
All Users, Current Host    $PsHome\Microsoft.PowerShell_profile.ps1
All Users, All Hosts       $PsHome\Profile.ps1
...

Последние два местоположения профиля должны работать для вас (если, конечно, $PsHome не содержит проблемных символов).

0 голосов
/ 07 мая 2017

Я сам столкнулся с этой проблемой.Я бегу PSv5 .Я пытался обойти это, используя серьезный акцент, но обнаружил, что это не работает для меня.Поэтому я подумал: «Давайте посмотрим, что с ним делает intellisense», и определенно нашел решение:

Используйте два апострофа!

0 голосов
/ 21 декабря 2010

Попробуйте использовать следующую escape-последовательность:

d:\Owen`'s Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...