Windows PowerShell : 명령 프롬프트 변경


85

Windows PowerShell을 사용하여 명령 프롬프트를 변경하려면 어떻게합니까?

예를 들어, 기본 프롬프트는 다음과 같습니다.

PS C:\Documents and Settings\govendes\My Documents>

이 문자열을 사용자 지정하고 싶습니다.

답변:


107

promptPowerShell 프로필 ( notepad $PROFILE)에 함수 를 입력하기 만하면됩니다 . 예 :

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

또는 색깔 :

function prompt
{
    Write-Host ("PS " + $(get-date) +">") -nonewline -foregroundcolor White
    return " "
}

2
notepad $PROFILE관리자 powershell 프롬프트에서 Windows 7에서 작동하지 않음
jcollum

18
Ahh, 먼저 프로필을 만들어야합니다.new-item -itemtype file -path $profile -force
jcollum 2011

4
참고 : 프로필에 기능을 저장하는 대신 powershell에 프롬프트 기능을 붙여 넣어 프롬프트 경로를 변경할 수 있지만 powershell을 시작할 때마다이 작업을 수행해야합니다.
Larry Battle

3
또한 관리자 권한으로 Powershell을 실행하고 Set-ExecutionPolicy RemoteSigned.
qed

1
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted현재 사용자에 대해서만 변경하거나 관리자로 실행할 수없는 경우 @qed .
cz :

21

Ocaso Protal의 답변 에 대한 의견과 관련하여 Windows Server 2012 및 Windows 7 (PowerShell 창에서)에 다음이 필요합니다.

new-item -itemtype file -path $profile -force
notepad $PROFILE

여러 사용자 이름 (예 : 자신 + 프로덕션 로그인)으로 실행하는 경우 프롬프트로 다음을 제안합니다.

function Global:prompt {"PS [$Env:username]$PWD`n>"} 

(신용은 David I. McIntosh에게 있습니다.)


1
또한 관리자 권한으로 Powershell을 실행하고 Set-ExecutionPolicy RemoteSigned.
qed

11

프롬프트에서 현재 타임 스탬프가 마음에 들었고 네트워크 드라이브의 드라이브 문자를 확인했습니다. 가독성을 높이기 위해 두 줄로 나누고 색상으로 약간 연주했습니다.

CMD를 사용하면

PROMPT=$E[33m$D$T$H$H$H$S$E[37m$M$_$E[1m$P$G

PowerShell의 경우 다음과 같은 결과를 얻었습니다.

function prompt {
    $dateTime = get-date -Format "dd.MM.yyyy HH:mm:ss"
    $currentDirectory = $(Get-Location)
    $UncRoot = $currentDirectory.Drive.DisplayRoot

    write-host "$dateTime" -NoNewline -ForegroundColor White
    write-host " $UncRoot" -ForegroundColor Gray
    # Convert-Path needed for pure UNC-locations
    write-host "PS $(Convert-Path $currentDirectory)>" -NoNewline -ForegroundColor Yellow
    return " "
}

좀 더 읽기 쉽습니다 :-)

BTW :

  • powershell_ise.exe $PROFILE(멍청한) 메모장 대신 선호 합니다 .
  • 중단 점을 사용하여 prompt ()를 디버그하려면 prompt-function의 이름을 다른 이름으로 바꾸거나 다른 파일에서 시도해야합니다. 그렇지 않으면 루프에 빠질 수 있습니다. 디버깅을 중지하면 prompt ()가 다시 호출되고 중단 점에서 다시 중지됩니다. 처음에는 꽤 짜증나 ...

내가 찾던 바로 그것!
Glen Little

8

직접 해보고 싶다면 Ocaso Protal의 대답 은 갈 길입니다. 그러나 당신이 나처럼 게으르고 당신을 위해 무언가를 원한다면 나는 Luke Sampson의 Pshazz 패키지를 강력히 추천 합니다 .

얼마나 게 으르는지 보여 드리기 위해 간단한 튜토리얼을 제공하겠습니다.

  • Scoop ( scoop install pshazz)으로 Pshazz 설치
  • 미리 정의 된 멋진 테마 사용 ( pshazz use msys)
  • (뿌리) 맥주 마시기

Pshazz를 사용하면 JSON 파일을 구성하는 것처럼 간단하게 자신 만의 테마를 만들 수 있습니다. 얼마나 쉬운 지 것을 확인하십시오!


7

내가 사용하는 드라이브 문자 만 표시하려면 :

            function prompt {(get-location).drive.name+"\...>"}

그런 다음 내가 사용하는 경로로 되돌리려면 :

            function prompt {"$pwd>"}

5

이 버전의 Warren Stevens의 답변Set-Location네트워크 공유 에 대한 경로에서 시끄러운 "Microsoft.PowerShell.Core \ FileSystem"을 방지합니다 .

function prompt {"PS [$Env:username@$Env:computername]$($PWD.ProviderPath)`n> "} 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.