항목
    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 { <function-body> }


      Prompt 함수는 개체(일반적으로 문자열)를 반환해야 합니다. 문자열로 형식이 지정된 개체나 문자열을 반환하는 것이 
      좋습니다. 문자열은 80자 줄에 맞아야 합니다.


      예를 들면 다음과 같습니다.

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

  
      모든 함수와 마찬가지로 Prompt 함수는 Function: 드라이브에 저장됩니다. 현재 Prompt 함수의 
      코드를 표시하려면 다음과 같이 입력합니다.

	  (get-item function:prompt).definition


      이 명령은 Get-Item cmdlet을 사용하여 Function: 드라이브에의 Prompt 항목을 표시합니다. 
      그런 다음 점 표기법을 사용하여 Prompt 함수의 Definition 속성 값을 표시합니다. 

    
  기본 프롬프트 

      기본 Windows PowerShell 프롬프트는 다음과 같습니다.

	  PS>


      이 프롬프트는 프롬프트 함수가 오류를 생성하거나 프롬프트 함수가 문자열 또는 개체를 반환하지 않는 경우에만 
      표시됩니다.

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


      Windows PowerShell에는 기본 제공 프롬프트가 제공되며 사용자가 Prompt 함수를 직접 작성할 
      때까지는 일반적으로 기본 프롬프트가 표시되지 않습니다.


  기본 제공 프롬프트
    
      Windows PowerShell에는 익숙한 프롬프트를 만드는 기본 제공 프롬프트 함수가 있습니다. 기본 제공 
      프롬프트 함수는 다음과 같습니다.

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

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

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


      이 함수는 Test-Path cmdlet을 사용하여 $PSDebugContext 자동 변수가 채워지는지 여부를 결정합니다. 
      $PSDebugContext가 채워질 경우 디버깅 모드이면 다음과 같이 "[DBG]"가 프롬프트에 추가됩니다.

	  [DBG] PS C:\ps-test>
	
     
      $PSDebugContext가 채워지지 않으면 이 함수는 프롬프트에 "PS"를 추가합니다. 또한 이 함수는 
      Get-Location cmdlet을 사용하여 현재 파일 시스템 디렉터리 위치를 가져옵니다. 그런 다음 오른쪽 
      꺾쇠 괄호(>)를 추가합니다. 
      예를 들면 다음과 같습니다.

	  PS C:\ps-test>	


      중첩 프롬프트에 있을 경우 이 함수는 이중 꺾쇠 괄호(>>)를 프롬프트에 추가합니다. $NestedPromptLevel 
      자동 변수 값이 1보다 크면 중첩 프롬프트가 표시됩니다.


      예를 들어 중첩 프롬프트에서 디버깅할 때 프롬프트는 다음 프롬프트와 비슷합니다.

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


      Enter-PSSession cmdlet은 원격 컴퓨터 이름을 현재 Prompt 함수 앞에 추가합니다. 
      Enter-PSSession cmdlet을 사용하여 원격 컴퓨터에서 세션을 시작하는 경우 원격 컴퓨터의 이름을 포함하도록 
      명령 프롬프트가 바뀝니다. 예를 들면 다음과 같습니다.

          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 함수는 기본 함수를 수정한 것으로서 "관리자 권한으로 실행" 옵션을 사용하여 Windows 
      PowerShell을 열면 기본 제공 Windows PowerShell 프롬프트에 "[ADMIN]:"을 추가합니다.
    
          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 함수는 뒤에 오는 명령의 기록 ID를 표시합니다. 명령 기록을 보려면 Get-History 
      cmdlet을 사용합니다.  

          function prompt
          {
             # @ 기호는 기록 항목이 단 한 개일 경우 배열을 만듭니다.
             $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 cmdlet을 사용하여 색상을 임의로 변경하는 
      프롬프트를 만듭니다. 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




목차