РАЗДЕЛ
    about_Prompts

КРАТКОЕ ОПИСАНИЕ
    Описывает функцию Prompt и показывает, как создать пользовательску
    ю функцию Prompt.

  
ПОЛНОЕ ОПИСАНИЕ
    Командная строка Windows PowerShell показывает, что среда Windows 
    PowerShell готова к выполнению команд: 

	PS C:\>


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

   
  Функция Prompt

      Функция Prompt определяет внешний вид приглашения Windows 
      PowerShell. Windows PowerShell поставляется со встроенной 
      функцией Prompt, но вы можете переопределить ее, определив 
      собственную функцию Prompt.


      Функция Prompt имеет следующий синтаксис:

	  function prompt { <тело_функции> }


      Функция Prompt должна возвращать объект, как правило строку. 
      Рекомендуется, чтобы она возвращала строку или объект, 
      форматированный как строка. Строка не должна превышать длиной 
      80 символов.


      Пример:

	  PS C:\> function prompt {"Hello, World > "}
          Hello, World 

  
      Как все функции, функция Prompt хранится на диске Function:. 
      Для просмотра кода текущей функции Prompt введите следующую команду:

	  (get-item function:prompt).definition


      Эта команда использует командлет Get-Item для отображения 
      элемента Prompt на диске Function:. Затем используется точка 
      для отображения значения свойства Definition функции Prompt. 

    
  Приглашение по умолчанию 

      Приглашение Windows PowerShell по умолчанию:

	  PS>


      Такое приглашение отображается только в том случае, если 
      функция Prompt выдает ошибку или не возвращает строку или объект.

          PS C:\> function prompt {$null}
          PS>


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


  Встроенное приглашение
    
 
      Windows PowerShell имеет встроенную функцию Prompt, которая 
      создает привычное приглашение. Эта встроенная функция выглядит так:

          function prompt
          {
              $(if (test-path variable:/PSDebugContext) { '[DBG]: ' } 

              else { '' }) + 'PS ' + $(Get-Location) `

              + $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> '
          } 


      Функция использует командлет Test-Path, чтобы выяснить, 
      определена ли автоматическая переменная $PSDebugContext. Если 
      переменная $PSDebugContext определена, пользователь находится в 
      режиме отладки, и символы "[DBG]" добавляются к приглашению, 
      как в следующем примере:

	  [DBG] PS C:\ps-test>
	
     
      Если переменная $PSDebugContext не определена, функция 
      добавляет к приглашению символы "PS". Также функция использует 
      командлет Get-Location для получения текущего местоположения 
      каталога файловой системы. Затем она добавляет правую угловую 
      скобку (>). Пример:

	  PS C:\ps-test>	


      Если вы находитесь во вложенной командной строке, функция 
      добавляет две угловые скобки (>>) к приглашению. (Вы находитесь 
      во вложенной командной строке, если значение автоматической 
      переменной $NestedPromptLevel больше 1.)


      Например, если вы отлаживаете во вложенной командной строке, 
      приглашение будет примерно таким:

	  [DBG] PS C:\ps-test>>>


      Командлет Enter-PSSession предваряет результат работы текущей 
      функции Prompt именем удаленного компьютера. Когда вы 
      пользуетесь командлетом Enter-PSSession, чтобы начать сеанс 
      работы с удаленным компьютером, приглашение командной строки 
      меняется, включая в себя имя удаленного компьютера. Пример:

          PS Hello, World> Enter-PSSession Server01

          [Server01]: PS Hello, World>


      Другие ведущие приложения Windows PowerShell и альтернативные 
      оболочки могут иметь собственные настраиваемые приглашения 
      командной строки.


      Дополнительные сведения об автоматических переменных 
      $PSDebugContext и $NestedPromptLevel см. в разделе 
      about_Automatic_Variables.
 	

  Настройка приглашения командной строки

      Чтобы изменить приглашение, нужно написать новую функцию 
      Prompt. Эта функция не является защищенной, таким образом, вы 
      можете перезаписать ее. 
 

      Чтобы написать функцию приглашения, нужно ввести следующее:

	  function prompt { }


      Затем введите между фигурными скобками команду или строку, 
      создающую ваше приглашение.


      Например, следующее приглашение включает имя вашего компьютера:

	  function prompt {"PS [$env:COMPUTERNAME]> "}


      На компьютере с именем Server01 приглашение будет напоминать 
      следующее:

	  PS [Server01] >


      Включить текущую дату и время можно с помощью следующей функции 
      приглашения:

	  function prompt {"$(get-date)> "}


      Приглашение будет напоминать следующее:

	  01/01/2008 17:49:47>


      Вы также можете изменить функцию Prompt по умолчанию:


          function prompt
          {
              $(if (test-path variable:/PSDebugContext) { '[DBG]: ' } 

              else { '' }) + "$(get-date)" `

              + $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> '
          } 

  
      Например, следующая измененная функция Prompt добавляет 
      "[ADMIN]:" к встроенному приглашению Windows PowerShell, в 
      случае если Windows PowerShell запускается командой "Запуск от 
      имени администратора":
    
          function prompt 
          {
              $identity = [Security.Principal.WindowsIdentity]::GetCurrent()
              $principal = [Security.Principal.WindowsPrincipal] $identity

              $(if (test-path variable:/PSDebugContext) { '[DBG]: ' } 

              elseif($principal.IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
    	          { "[ADMIN]: " }

              else { '' }) + 'PS ' + $(Get-Location) + $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> '
          }



      Если Windows PowerShell запускается командой "Запуск от имени 
      администратора", приглашение будет напоминать следующее:
                
	  [ADMIN]: PS C:\ps-test>


      Следующая функция Prompt показывает идентификатор записи 
      следующей команды. Для получения журнала команд используется 
      командлет Get-History.  

          function prompt
          {
             # The at sign creates an array in case only one history item exists.
             $history = @(get-history)
             if($history.Count -gt 0)
             {
                $lastItem = $history[$history.Count - 1]
                $lastId = $lastItem.Id
             }

             $nextCommand = $lastId + 1
             $currentDirectory = get-location
             "PS: $nextCommand $currentDirectory >"
          }




      Следующая строка использует командлеты Write-Host и Get-Random 
      для создания приглашения, изменяющего цвет случайным образом. 
      Поскольку командлет Write-Host выводит данные в текущее ведущее 
      приложение, не возвращая объект, эта функция включает 
      инструкцию Return. Без нее среда Windows PowerShell использует 
      приглашение по умолчанию: "PS>".

          function prompt
          {
              $color = get-random -min 1 -max 16
              write-host ("PS " + $(get-location) +">") -nonewline -foregroundcolor $color
              return " "
          }

  Сохранение приглашения
	
      Как любая функция, функция Prompt применяется только к текущему 
      сеансу работы. Чтобы сохранить функцию Prompt для будущих 
      сеансов, добавьте ее в ваш профиль Windows PowerShell. 
      Дополнительные сведения о профилях см. в разделе about_Profiles.


СМ. ТАКЖЕ
    Get-Location
    Enter-PSSession
    Get-History
    Get-Random
    Write-Host
    about_Profiles
    about_Functions
    about_Scopes
    about_Debuggers
    about_Automatic_Variables




Содержание