about_Prompts
간단한 설명
함수를 Prompt
설명하고 사용자 지정 Prompt
함수를 만드는 방법을 보여 줍니다.
자세한 설명
PowerShell 명령 프롬프트는 PowerShell이 명령을 실행할 준비가 되었음을 나타냅니다.
PS C:\>
PowerShell에는 기본 제공 함수가 있습니다 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
얻으려면 cmdlet을 Get-Command
사용하거나 함수 드라이브에서 Get-Item
cmdlet을 사용합니다.
예시:
PS C:\> Get-Command Prompt
CommandType Name ModuleName
----------- ---- ----------
Function prompt
프롬프트 값을 설정하는 스크립트를 얻으려면 dot 메서드를 사용하여 함수의 Prompt
ScriptBlock 속성을 가져옵니다.
예시:
(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
}
함수는 cmdlet을 Test-Path
사용하여 자동 변수에 값이 $PSDebugContext
있는지 여부를 테스트합니다. 값이 있는 경우 $PSDebugContext
디버깅 모드에서 실행 중이며 [DBG]:
다음과 같이 프롬프트에 추가됩니다.
[DBG]: PS C:\ps-test>
$PSDebugContext
채워지지 않으면 함수가 프롬프트에 추가됩니다PS
.
또한 함수는 cmdlet을 Get-Location
사용하여 현재 파일 시스템 디렉터리 위치를 가져옵니다. 그런 다음 오른쪽 꺾쇠 괄호(>
)를 추가합니다.
예시:
PS C:\ps-test>
중첩 프롬프트에 있는 경우 함수는 프롬프트에 두 개의 꺾쇠 괄호(>>
)를 추가합니다. 자동 변수의 값이 0보다 큰 경우 중첩 프롬프트에 $NestedPromptLevel
있습니다.
예를 들어 중첩된 프롬프트에서 디버깅하는 경우 프롬프트는 다음 프롬프트와 유사합니다.
[DBG] PS C:\ps-test>>>
프롬프트 변경 내용
cmdlet은 Enter-PSSession
원격 컴퓨터의 이름을 현재 Prompt
함수 앞에 추가합니다. cmdlet을 Enter-PSSession
사용하여 원격 컴퓨터로 세션을 시작하면 명령 프롬프트가 원격 컴퓨터의 이름을 포함하도록 변경됩니다. 예시:
PS Hello, World> Enter-PSSession Server01
[Server01]: PS Hello, World>
다른 PowerShell 호스트 애플리케이션 및 대체 셸에는 고유한 사용자 지정 명령 프롬프트가 있을 수 있습니다.
자동 변수 및 $NestedPromptLevel
자동 변수에 $PSDebugContext
대한 자세한 내용은 about_Automatic_Variables 참조하세요.
프롬프트를 사용자 지정하는 방법
프롬프트를 사용자 지정하려면 새 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
함수는 관리자 권한 세션에서 실행할 때 기본 제공 PowerShell 프롬프트에 추가 [ADMIN]:
됩니다.
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
함수는 다음 명령의 기록 ID를 표시합니다. 명령 기록을 보려면 cmdlet을 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 >"
}
다음 프롬프트는 및 Get-Random
cmdlet을 사용하여 Write-Host
색을 임의로 변경하는 프롬프트를 만듭니다. 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
대한 함수를 저장하려면 PowerShell 프로필에 추가합니다. 프로필에 대한 자세한 내용은 about_Profiles 참조하세요.
참고 항목
PowerShell