РАЗДЕЛ 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