Windows PowerShell: कमांड प्रॉम्प्ट को बदलना


85

Windows PowerShell का उपयोग करना, मैं कमांड प्रॉम्प्ट को कैसे बदलूं?

उदाहरण के लिए, डिफ़ॉल्ट प्रॉम्प्ट कहता है

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

मैं उस स्ट्रिंग को कस्टमाइज़ करना चाहता हूं।

जवाबों:


107

फ़ंक्शन promptको अपने PowerShell प्रोफ़ाइल में रखें ( notepad $PROFILE), जैसे:

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

या रंगीन:

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

2
notepad $PROFILEWindows 7 में एक व्यवस्थापक
शक्तियाँ

18
आह, मैं देख रहा हूं कि आपको पहले प्रोफाइल बनाने की जरूरत है:new-item -itemtype file -path $profile -force
jcollum

4
नोट: आप अपनी प्रोफ़ाइल में फ़ंक्शन को सहेजने के बजाय प्रॉम्प्ट पथ में प्रॉम्प्ट फ़ंक्शन में बस प्रॉम्प्ट फ़ंक्शन को पेस्ट कर सकते हैं, लेकिन आपको पावरशेल लॉन्च करने पर हर बार ऐसा करना होगा।
लैरी बैटल

3
आपको Powershell को व्यवस्थापक के रूप में चलाने और करने की आवश्यकता है Set-ExecutionPolicy RemoteSigned
qed

1
@qed Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestrictedयदि आप केवल वर्तमान उपयोगकर्ता के लिए बदलना चाहते हैं या व्यवस्थापक के रूप में नहीं चल सकते।
cz

21

Ocaso Protal के जवाब के लिए एक टिप्पणी से संबंधित , निम्न की आवश्यकता है विंडोज सर्वर 2012 के साथ-साथ विंडोज 7 (एक पॉवरशेल विंडो में):

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

यदि आप कई उपयोगकर्ता नामों (जैसे स्वयं + उत्पादन लॉगिन) के साथ चलते हैं, तो मैं आपको एक संकेत के रूप में निम्नलिखित सुझाव दूंगा:

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

(इस एक के लिए क्रेडिट डेविड आई। मैकिंटोश को जाता है।)


1
आपको Powershell को व्यवस्थापक के रूप में चलाने और करने की आवश्यकता है Set-ExecutionPolicy RemoteSigned
qed

11

प्रॉम्प्ट पर, मुझे नेटवर्क ड्राइव के लिए एक मौजूदा टाइमस्टैम्प और हल किए गए ड्राइव अक्षर पसंद हैं। इसे और अधिक पठनीय बनाने के लिए, मैंने इसे दो पंक्तियों में रखा, और रंगों के साथ थोड़ा खेला।

सीएमडी के साथ, मैं समाप्त हो गया

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(गूंगा) नोटपैड के बजाय पसंद करता हूं ।
  • यदि आप ब्रेकपॉइंट्स के साथ अपने प्रॉम्प्ट () को डीबग करना पसंद करते हैं, तो आपको प्रॉम्प्ट-फ़ंक्शन को किसी और चीज़ में बदलना चाहिए (या इसे किसी अन्य फ़ाइल में आज़माएं)। अन्यथा आप एक लूप में समाप्त हो सकते हैं: जब आप डीबग करना बंद कर देते हैं, तो प्रॉम्प्ट () को फिर से कॉल किया जाता है और आप ब्रेकपॉइंट पर फिर से रुक जाते हैं। काफी चिढ़, पहले ...

मुझे इसकी ही खोज थी!
ग्लेन लिटिल

8

यदि आप इसे स्वयं करना चाहते हैं, तो Ocaso Protal का उत्तर जाने का मार्ग है। लेकिन अगर तुम मेरी तरह आलसी हो और सिर्फ तुम्हारे लिए कुछ करना चाहते हो, तो मैं ल्यूक सैम्पसन के Pshazz पैकेज की अत्यधिक अनुशंसा करता हूं ।

बस आपको यह दिखाने के लिए कि आप कितने आलसी हो सकते हैं, मैं एक त्वरित ट्यूटोरियल प्रदान करूंगा।

  • स्कूप के साथ Pshazz स्थापित करें ( scoop install pshazz)
  • एक अच्छी पूर्वनिर्धारित थीम का उपयोग करें ( pshazz use msys)
  • (रूट) बीयर पीते हैं

Pshazz आपको अपनी स्वयं की थीम बनाने की अनुमति देता है, जो JSON फ़ाइल को कॉन्फ़िगर करने के समान सरल है। कितना आसान है यह देखने के लिए मेरी जाँच करें !


7

केवल मेरे द्वारा उपयोग किए जाने वाले ड्राइव अक्षर को दिखाने के लिए:

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

फिर मेरे द्वारा उपयोग किए गए पथ पर वापस लौटने के लिए:

            function prompt {"$pwd>"}

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.