Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Краткое описание
prompt Описывает функцию и демонстрирует создание пользовательской prompt функции.
Длинное описание
Командная строка PowerShell указывает, что PowerShell готова к выполнению команды:
PS C:\>
PowerShell имеет встроенную prompt функцию. Вы можете определить собственную настраиваемую prompt функцию в скрипте профиля PowerShell.
prompt Сведения о функции
Функция prompt определяет внешний вид запроса PowerShell.
PowerShell поставляется со встроенной prompt функцией, но ее можно переопределить, определив собственную prompt функцию.
Функция prompt имеет следующий синтаксис:
function prompt { <function-body> }
Функция prompt должна возвращать объект. Рекомендуется возвращать строку или объект, отформатированный как строку. Максимальная рекомендуемая длина — 80 символов.
Например, следующая prompt функция возвращает строку Hello, World, за которой следует угловая скобка (>).
PS C:\> function prompt {"Hello, World > "}
Hello, World >
Получение функции prompt
Чтобы получить функцию prompt , используйте командлет или используйте Get-CommandGet-Item командлет на диске функции.
Например:
PS C:\> Get-Command prompt
CommandType Name ModuleName
----------- ---- ----------
Function prompt
Чтобы получить скрипт, который задает значение запроса, используйте метод dot для получения функции.
Например:
(Get-Command prompt).ScriptBlock
"PS $($ExecutionContext.SessionState.Path.CurrentLocation)$('>' * ($NestedPromptLevel + 1)) "
# .Link
# https://go.microsoft.com/fwlink/?LinkID=225750
# .ExternalHelp System.Management.Automation.dll-help.xml
Как и все функции, prompt функция хранится на Function: диске.
Чтобы отобразить скрипт, создающий текущую prompt функцию, введите:
(Get-Item Function:prompt).ScriptBlock
Запрос по умолчанию
Запрос по умолчанию отображается только в том случае, если prompt функция создает ошибку или не возвращает объект.
Запрос PowerShell по умолчанию:
PS>
Например, следующая команда задает prompt для функции $nullнедопустимое значение. В результате появится запрос по умолчанию.
PS C:\> function prompt {$null}
PS>
Так как PowerShell поставляется со встроенным запросом, обычно не отображается запрос по умолчанию.
Встроенный запрос
PowerShell включает встроенную prompt функцию.
function prompt {
"PS $($ExecutionContext.SessionState.Path.CurrentLocation)$('>' * ($NestedPromptLevel + 1)) ";
# .Link
# https://go.microsoft.com/fwlink/?LinkID=225750
# .ExternalHelp System.Management.Automation.dll-help.xml
}
Функция использует Test-Path командлет для проверки наличия значения автоматической $PSDebugContext переменной. Если $PSDebugContext имеется значение, выполняется в режиме отладки и [DBG]: добавляется в запрос следующим образом:
[DBG]: PS C:\ps-test>
Если $PSDebugContext функция не заполнена, функция добавляется PS в запрос.
И функция использует Get-Location командлет для получения текущего расположения каталога файловой системы. Затем он добавляет прямоугольную угловую скобку (>).
Например:
PS C:\ps-test>
Если вы находитесь в вложенном запросе, функция добавляет две угловые скобки (>>) в запрос. Если значение автоматической переменной $NestedPromptLevel больше 0, отображается вложенном запросе.
Например, при отладке в вложенном запросе запрос похож на следующий запрос:
[DBG] PS C:\ps-test>>>
Изменения в запросе
Командлет Enter-PSSession добавляет имя удаленного компьютера в текущую prompt функцию. При использовании Enter-PSSession командлета для запуска сеанса с удаленным компьютером командная строка изменяет имя удаленного компьютера. Например:
PS Hello, World> Enter-PSSession Server01
[Server01]: PS Hello, World>
Другие приложения и альтернативные оболочки PowerShell могут иметь собственные пользовательские командные строки.
Дополнительные сведения о переменных и автоматических $PSDebugContext переменных см. в about_Automatic_Variables$NestedPromptLevel.
Настройка запроса
Чтобы настроить запрос, напишите новую prompt функцию. Функция не защищена, поэтому ее можно перезаписать.
Чтобы написать функцию prompt , введите следующее:
function prompt { }
Затем между фигурными скобками введите команды или строку, которая создает запрос.
Например, следующий запрос содержит имя компьютера:
function prompt {"PS [$Env:COMPUTERNAME]> "}
На компьютере Server01 запрос похож на следующий запрос:
PS [Server01] >
Следующая prompt функция включает текущую дату и время:
function prompt {"$(Get-Date)> "}
Запрос похож на следующий запрос:
03/15/2012 17:49:47>
Вы также можете изменить функцию по умолчанию prompt :
Например, следующая измененная prompt функция добавляется [ADMIN]: в встроенный запрос PowerShell при выполнении в сеансе с повышенными привилегиями.
function prompt {
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = [Security.Principal.WindowsPrincipal] $identity
$adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator
$(if (Test-Path Variable:/PSDebugContext) { '[DBG]: ' }
elseif($principal.IsInRole($adminRole)) { "[ADMIN]: " }
else { '' }
) + 'PS ' + $(Get-Location) +
$(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
}
При запуске 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 . Без этого PowerShell использует запрос PS>по умолчанию.
function prompt {
$color = Get-Random -Min 1 -Max 16
Write-Host ("PS " + $(Get-Location) +">") -NoNewline `
-ForegroundColor $Color
return " "
}
Сохранение функции prompt
Как и любая функция, prompt функция существует только в текущем сеансе. Чтобы сохранить функцию prompt для будущих сеансов, добавьте ее в профили PowerShell. Дополнительные сведения о профилях см. в about_Profiles.
См. также
PowerShell