30

Я использую Powershell в Windows 7. Как настроить Powershell, чтобы он отображал только имя текущей папки (вместо полного пути) в приглашении оболочки?

Например, вместо C:\folder\directory\name> я хочу name> .

5 ответов5

46

Вы должны настроить функцию приглашения в своем профиле PowerShell (%userprofile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1); он может быть пустым или даже не существовать, если вы никогда не изменяли его раньше.

  1. Откройте свой профиль (например, откройте вышеупомянутый файл или находясь в PowerShell, Notepad $profile)

  2. Добавьте следующее в свой профиль:

    function prompt {
      $p = Split-Path -leaf -path (Get-Location)
      "$p> "
    }
    
  3. Сохранить профиль

  4. Перезапустите PowerShell

    Необязательно. Если вы получили сообщение о том, что вам не разрешено запускать сценарии, вам нужно скопировать / вставить эту строку в PowerShell:

    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
    

    и перезагрузите.

Политики выполнения Windows PowerShell позволяют определить условия, при которых Windows PowerShell загружает файлы конфигурации и запускает сценарии.

Вы можете установить политику выполнения для локального компьютера, для текущего пользователя или для определенного сеанса. Вы также можете использовать параметр групповой политики для установки политики выполнения для компьютеров и пользователей.

Источник: документация Microsoft

3

Как дополнительное примечание, я не мог выполнить команду @ Synetech, пока я сначала не создал профиль $.

  1. Откройте PowerShell
  2. Введите $profile и нажмите Enter. Это отобразит путь к профилю, на который опирается PowerShell, даже если он не существует (он не был для меня). Мой путь отличался от описанного выше @Synetech.

    >$profile
    C:\Users\[username]\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
    
  3. Мне пришлось создать папку WindowsPowerShell и файл Microsoft.PowerShell_profile.ps1.

  4. Добавьте код @ Synetech и перезапустите PowerShell.

Замечания:

Если вы используете posh-git (который устанавливается при использовании рабочего стола GitHub), скрипт @ Synetech переопределит приглашение posh-git. Дополнительные подсказки для скриптов пошалить можно здесь.

2

Измените подсказку, чтобы показать текущую папку без полного пути и больше, чем символ в конце:

Одним из способов может быть:

Function Prompt { "$( ( get-item $pwd ).Name )>" }

Или же:

Function Prompt { "$( Split-Path -leaf -path (Get-Location) )>" }

Или же:

Function Prompt { "$( ( Get-Location | Get-Item ).Name )>" }
1

Я обнаружил, что это довольно легко - объединить ответ @ Synetech и информацию, найденную в профилях PowerShell. Потому что я новичок в PS. Мои шаги (для vscode):

  1. test-path $ profile (в командной строке PS - настроен ли профиль?)
  2. new-item -path $ profile -itemtype file -force (при условии, что ответ на вышеприведенный ответ ложный)
  3. Блокнот $ profile (открывает блокнот)
  4. вставить в

    function prompt {
      $p = Split-Path -leaf -path (Get-Location)
      "$p> "
    }
    
  5. сохранить (вам не нужно выбирать местоположение, оно уже сделано для вас)
  6. перезагрузите vscode - вы, вероятно, получите сообщение о запуске скриптов (или просто выполните следующий шаг перед перезагрузкой)
  7. Set-ExecutionPolicy RemoteSigned -Scope CurrentUser (по вашей подсказке PS, из ответа SuperUse)

  8. перезагрузить vscode

Так что, в основном, это ответ @ Synetech (с голосованием), чтобы немного начать - особенно шаг 2 делает это очень легко.

0

Ниже единственная строка отлично работает для меня

(Get-Location | Get-Item).название

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