Я хочу отредактировать приглашение Powershell, как описано здесь https://superuser.com/questions/1259900/how-to-colorize-the-powershell-prompt. Однако моя переменная $profile ссылается на несуществующий путь C:\Users\ferdi\OneDrive\Documenti\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
. В частности, папка WindowsPowerShell не существует. Как мне найти истинное местоположение моего $profile, чтобы я мог редактировать его и изменить свое приглашение?
Большое спасибо!
Значение автоматической переменной $PROFILE — это истинное местоположение файла вашего профиля, точнее файла профиля для текущего пользователя (вас) и текущего хоста (приложения, на котором размещается PowerShell, обычно окна консоли/терминала). .
Дополнительную информацию, в том числе о других файлах профиля, см. в концептуальном разделе справки about_Profiles.
Несмотря на то, что $PROFILE
— это строка, она украшена свойствами, содержащими все пути к профилям, и простой способ показать их все — это$PROFILE | Select-Object *
, или, более концептуально, $PROFILE | Get-Member -MemberType NoteProperty
, как горит ноты.
Просто PowerShell по умолчанию не создает никаких файлов профилей и даже не создает для них каталогов.
Чтобы создать файл $PROFILE
по требованию, включая его каталог, используйте следующее:
if (-not (Test-Path $PROFILE)) {
New-Item -Force $PROFILE
}
-Force
не только создает родительские каталоги по мере необходимости, но и заменяет любой существующий файл новым, пустым.Например, чтобы затем отредактировать свой профиль с помощью Visual Studio Code, запустите code $PROFILE
или, если специальный текстовый редактор не установлен, используйте notepad $PROFILE
.
é
), обязательно сохраните файл как UTF-8 с BOM, который необходим Windows PowerShell для его чтения. правильно, а также работает в PowerShell (Core) 7.Отличный ответ, как обычно. Все пути профиля относятся к типам NoteProperty
. Что заставляет CurrentUserCurrentHost
испускаться при использовании переменной $PROFILE
? Хотите это как еще один вопрос?
Спасибо, @lit. Причина, по которой $PROFILE
эквивалентна значению свойства .CurrentUserCurrentHost
ETS, заключается в том, что оно также объявлено как значение экземпляра [string]
, поскольку переменная $PROFILE
с точки зрения .NET заключена в (в основном) невидимый экземпляр [psobject]
— см. github .com/PowerShell/PowerShell/blob/…
Консоль PowerShell использует четыре (4) сценария «профиля». Посмотрите, как они используют
$PROFILE | Get-Member -Type NoteProperty
.