स्थायी PowerShell उपनाम बनाने के लिए कैसे


141

मैं एक बनाना चाहते हैं aliasएक की cmdletहै कि मैं Powershell के चालू सत्र बंद करने के बाद समाप्त न हो, चलो कहते हैं कि मैं इस उर्फ है:

C:\Users\Aymen> New-Alias Goto Set-Location

यह पूरी तरह से Gotoउपनाम बनाता है , लेकिन मैं वर्तमान सत्र बंद करने के बाद भी इसका उपयोग करना चाहता हूं, मैं इसे कैसे प्राप्त कर सकता हूं।

ध्यान दें:

PowerShell हेल्प सिस्टम से पता चलता है कि मैं अपने द्वारा बनाए गए उपनामों को निर्यात कर सकता हूं, और अगली बार जब मैं एक नया सत्र खोलता हूं, तो उन्हें आयात कर सकता हूं, वास्तव में ऐसा नहीं है जो मैं देख रहा हूं, इसके लिए, मेरे बाद एक उपनाम रखने का एक सीधा रास्ता है इसे विभिन्न सत्रों के माध्यम से बनाएं


IMO आप पटकथा में स्क्रिप्ट डालने से बहुत बेहतर हैं। इस तरह, कमांड आपके सभी खुले शेल में तुरंत उपलब्ध होगा और यदि आप इसे बदलते हैं, तो परिवर्तन $ प्रोफ़ाइल या कुछ को पुनः लोड किए बिना सभी बाद के उपयोगों के लिए प्रचारित करेगा।
मास्टरएक्सिलो

जवाबों:


112

अद्यतन - जनवरी 2017

profile.ps1हर बार शक्तियां शुरू होने पर फ़ाइल को किसी भी पॉवरशेल कोड में स्टोर करना संभव है । कम से कम 6 अलग-अलग रास्ते हैं जहां कोड को संग्रहीत करना है जिसके आधार पर उपयोगकर्ता को इसे निष्पादित करना होगा। हम उनमें से केवल 2 पर विचार कर सकते हैं: "सभी उपयोगकर्ता" और "केवल आपके उपयोगकर्ता" पथ।

तो अपने प्रश्न का उत्तर देने के लिए आपको केवल एक profile.ps1फाइल बनानी होगी जिसमें आप जिस कोड को निष्पादित करना चाहते हैं, वह है

New-Alias Goto Set-Location

और इसे उचित पथ में सहेजें:

  • "$Home\Documents" (C: \ Users \ yourname \ Documents): केवल आपका उपयोगकर्ता ही कोड निष्पादित करेगा।
  • $PsHome (C: \ Windows \ System32 \ WindowsPowerShell \ v1.0): प्रत्येक उपयोगकर्ता कोड निष्पादित करेगा।

परिवर्तनों को लागू करने के लिए सभी खुली शक्तियों को बंद करें और उन्हें पुनरारंभ करें।

टिप्स

  • यदि दोनों रास्तों में एक profile.ps1फाइल होती है जिसे सभी उपयोगकर्ता पहले निष्पादित करते हैं, तो उपयोगकर्ता विशिष्ट होते हैं।

  • यदि उपयोगकर्ता को प्रत्येक उपयोगकर्ता के लिए इसके निष्पादन को बढ़ाने की कोई आवश्यकता नहीं है, तो कोड को हमेशा उपयोगकर्ता की विशिष्ट प्रोफ़ाइल में रखें। फ़ाइल को अपने उपयोगकर्ता स्थान में जोड़ने के लिए आपको व्यवस्थापक अधिकारों की आवश्यकता नहीं है (अन्यथा आप करते हैं) और आप अन्य उपयोगकर्ताओं के स्थान को प्रदूषित नहीं करते हैं।

  • याद है! $PsHomeताकि आप दोनों पर्यावरण पर विचार करने के लिए आप हमेशा चाहते हैं, तो प्रोफ़ाइल कोड निष्पादित करने के लिए है पथ powershell की 32bit और 64bit उदाहरणों के बीच अलग है। आमतौर पर रास्ते C:\Windows\System32\WindowsPowerShell\v1.064 बिट पर्यावरण के C:\Windows\SysWow64\WindowsPowerShell\v1.0लिए और 32 बिट एक के लिए होते हैं।


9
कोई त्रुटि नहीं यह सिर्फ काम नहीं किया, मुझे यकीन नहीं है कि यह एक अनुमति मुद्दा है। मुझे वास्तव में यह काम करने के लिए मिला (मुझे पहले टिप्पणी करनी चाहिए)। मुझे फ़ोल्डर बनाना था \Users\{ME}\Documents\WindowsPowerShellऔर फिर Microsoft.PowerShell_profile.ps1मेरे लिए काम करने वाले अन्य रास्तों से गैर जोड़ना होगा।

2
लिंकिंग आर्टिकल के अनुसार, "$HOME\Documents\WindowsPowerShell"नामकरण का उपयोग Microsoft.PowerShell_profile.ps1गैर-आईएसई और वर्तमान होस्ट के लिए गुंजाइश को प्रतिबंधित करता है, लेकिन अनुमतियों (समान "$Home\Documents\profile.ps1" should apply) का मामला नहीं होना चाहिए । शायद यह वास्तव में ऐसा नहीं है, मैं इसे
आज़माऊंगा

2
हाय @Naigel, मुझे इसे काम करने के लिए इस दृष्टिकोण का उपयोग करना चाहिए: superuser.com/questions/516700/… इसलिए मेरे लिए अंतिम समाधान प्रोफ़ाइल के लिए फ़ाइल बनाना था: New-Item -path $profile -type file -forceजिसने फ़ोल्डर और फ़ाइल बनाईDocuments\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
ईगल

57
प्रोफाइल लोकेशन पाने का सबसे अच्छा तरीका हो सकता है कि आप अपने पॉवरशेल विंडो में "इको $ प्रोफाइल" चलाएं।
राहुल झा

2
अपने प्रोफाइल.प्स 1 फ़ाइल का बैकअप बनाना याद रखें, क्योंकि विंडोज क्रिएटर अपडेट फ़ाइल को उसके डिफ़ॉल्ट स्थान पर साफ़ करता प्रतीत होता है !!
गोलियोम em

109

इस तरह की चीज़ों को सीधे अपने $env:WINDIRशार्पशेल फोल्डर में जोड़ना अच्छा नहीं है ।
अनुशंसित तरीका यह है कि आप इसे अपनी व्यक्तिगत प्रोफ़ाइल में जोड़ें:

cd $env:USERPROFILE\Documents
md WindowsPowerShell -ErrorAction SilentlyContinue
cd WindowsPowerShell
New-Item Microsoft.PowerShell_profile.ps1 -ItemType "file" -ErrorAction SilentlyContinue
powershell_ise.exe .\Microsoft.PowerShell_profile.ps1

अब अपने alias को Microsoft.PowerShell_profile.ps1 फ़ाइल में जोड़ें जो अब खुली है:

function Do-ActualThing {
    # do actual thing
}

Set-Alias MyAlias Do-ActualThing

फिर इसे सहेजें, और वर्तमान सत्र को ताज़ा करें:

. $profile

नोट: यदि आप अनुमति जारी करना चाहते हैं, तो बस के मामले में

CategoryInfo: SecurityError: (:) [], PSSecurityException + FullQualifiedErrorId: अनधिकृत असफल

नीचे दिए गए आदेश का प्रयास करें और सत्र को फिर से ताज़ा करें।

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

1
शानदार टिप्पणी। बहुत स्पष्ट है, हालांकि मेरे अधिकार में स्पर्श नहीं है।
जस्टिन बीब

9
अपनी प्रोफाइल स्क्रिप्ट के निष्पादन की अनुमति देने के लिए, मुझे एक अतिरिक्त कदम उठाना पड़ा। एक प्रशासक के रूप में पॉवर्सशेल चलाएं, और निष्पादित करें Set-ExecutionPolicy RemoteSigned -Scope CurrentUser-Scopeविकल्प यह थोड़ा अधिक सुरक्षित बनाता है।
ज़ोम्बैट

2
यह एक महान विधि है! कृपया यह न समझें कि फ़ंक्शन स्वयं भी शेल में उपलब्ध है, इसलिए आपको सेट-एलियास भाग की आवश्यकता नहीं है। बस फ़ंक्शन को कॉल करें MyAlias। इसके अलावा, तर्क, उपयोग पर पारित करने के लिए @Args, उदाहरण के लिएfunction gs { git status @Args }
Automatico

3
@Automatico मुझे इस बारे में स्पष्ट होना पसंद है Set-Aliasक्योंकि मैं उचित Verbs के साथ उचित PS सम्मेलनों का उपयोग करके अपने तरीकों का नाम देना पसंद करता हूं। लेकिन हां, अगर आप चुगली नहीं कर रहे हैं, तो आप अपनी विधि को केवल नाम दे सकते हैं, जिसे आप आमंत्रित करना चाहते हैं।
चेस फ्लोरल

1
@ ज़ोम्बत यह ठीक है कि मैं घंटों तक संघर्ष कर रहा था। धन्यवाद, मैं अब कर रहा हूँ।
जवाद मंसूर

28

2018, विंडोज 10

आप किसी भी फाइल या डायरेक्टरी को एक साधारण पॉवरशेल स्क्रिप्ट की मदद से लिंक कर सकते हैं।

फ़ाइल शॉर्टकट स्क्रिप्ट लिखना

Windows PowerShell ISE खोलें। स्क्रिप्ट फलक में लिखें:

New-Alias ${shortcutName} ${fullFileLocation}

फिर कमांड-लाइन पेन पर जाएं। के साथ अपना PowerShell उपयोगकर्ता प्रोफ़ाइल पता खोजें echo $profile। इस पते में स्क्रिप्ट सहेजें।

यहां छवि विवरण दर्ज करें

पॉवरशेल के प्रोफाइल एड्रेस में स्क्रिप्ट हर बार जब आप पॉवरशेल खोलेंगे तो चलेगा। शॉर्टकट को हर नई पॉवरशेल विंडो के साथ काम करना चाहिए।

डायरेक्टरी शॉर्टकट स्क्रिप्ट लिखना

इसे हमारी लिपि में एक और पंक्ति की आवश्यकता है।

function ${nameOfFunction} {set-location ${directory_location}}
New-Alias ${shortcut} ${nameOfFunction} 

बाकी बिलकुल वैसा ही।

यहां छवि विवरण दर्ज करें

PowerShell स्क्रिप्ट सक्षम करें

डिफ़ॉल्ट रूप से PowerShell स्क्रिप्ट अवरोधित हैं। उन्हें सक्षम करने के लिए, डेवलपर्स के लिए सेटिंग्स -> अपडेट और सुरक्षा -> खोलें। डेवलपर मोड चुनें (पुनरारंभ की आवश्यकता हो सकती है)। डेवलपर मोड विंडोज 10 का चयन करना

PowerShell अनुभाग पर नीचे स्क्रॉल करें, "निष्पादन नीति बदलें ..." विकल्प पर टिक करें, और आवेदन करें।

PowerShell स्क्रिप्ट को सक्षम करना


2
echo $profileफ़ाइल को जोड़ने के लिए सही स्थान खोजने में मदद करने के लिए एक शानदार टिप है। व्यापक उत्तर के लिए धन्यवाद
पेड्रो मार्टिंस टिमोतेओ दा कोस्टा

19

सरल। उदाहरण के लिए...

एक Windows PowerShell विंडो खोलें और टाइप करें:

notepad $profile

फिर एक फंक्शन बनाएं, जैसे:

function goSomewhereThenOpenGoogleThenDeleteSomething {
    cd C:\Users\
    Start-Process -FilePath "http://www.google.com"
    rm fileName.txt
}

फिर फ़ंक्शन नाम के तहत इसे टाइप करें:

Set-Alias google goSomewhereThenOpenGoogleThenDeleteSomething

अब आप "Google" शब्द को विंडोज पॉवरशेल में टाइप कर सकते हैं और यह आपके फ़ंक्शन के भीतर कोड निष्पादित करता है!


$ प्रोफ़ाइल विंडोज 10 में एक डिफ़ॉल्ट पर्यावरण चर नहीं लगता है। यह किस ओर इशारा करने वाला है?
शब्दफिरवाइज

@wordsforthewise - $ PROFILE स्वत: चर मौजूदा सत्र में उपलब्ध PowerShell प्रोफ़ाइल के लिए पथ संग्रहीत करता है। यह विंडोज पॉवरशेल में शामिल है।
स्टर्लिंग बॉर्न

1
यह बार प्रदान किया गया सबसे सरल समाधान नहीं था।
फिल

मुझे यह काम करने के लिए 'सक्षम PowerScripts लिपियों' (एक अन्य जवाब में) को सक्षम करना था। गंभीरता से सुपर सरल!
रॉकी केव

10

सिर्फ संभावित स्थानों की इस सूची में जोड़ने के लिए ...

यह मेरे लिए काम नहीं किया: \Users\{ME}\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

हालाँकि इसने किया: \Users\{ME}\OneDrive\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

यदि आपके पास कोई प्रोफ़ाइल नहीं है या आप एक सेट करना चाहते हैं, तो निम्न कमांड चलाएँ, यह फ़ोल्डर / फ़ाइलों को आवश्यक बना देगा और आपको यह भी बताएगा कि यह कहाँ रहता है! New-Item -path $profile -type file -force


5

profile1.psl फ़ाइल बनाने के लिए, निम्न कमांड टाइप करें:

नए आइटम $ PROFILE.CurrentUserAllHosts -ItemType फ़ाइल -Force

फ़ाइल तक पहुँचने के लिए, अगले कमांड में टाइप करें:

ise $ PROFILE.CurrentUserAllHosts

ध्यान दें कि यदि आपने पहले ऐसा नहीं किया है, तो आप देखेंगे कि आप अपनी निष्पादन नीति के कारण स्क्रिप्ट को नहीं चला पाएंगे, जिसे आपको प्रतिबंधित (डिफ़ॉल्ट) से अप्रतिबंधित में बदलना होगा।

ऐसा करने के लिए स्क्रिप्ट बंद करें और फिर यह कमांड टाइप करें:

सेट-एक्ज़ीक्यूशनपॉलिशी -स्कॉप करंटयूज़र

फिर:

RemoteSigned

फिर इस आदेश को फिर से:

ise $ PROFILE.CurrentUserAllHosts

फिर अंत में स्क्रिप्ट में अपने उपनाम टाइप करें, इसे सहेजें, और उन्हें हर बार जब आप अपने कंप्यूटर को पुनरारंभ करने के बाद भी, पॉवरशेल चलाते हैं, तो चलना चाहिए।


3
आप शायद चाहते हैं Set-ExecutionPolicy RemoteSigned:। सिफारिश करने मत जाओ Unrestricted। स्रोत: itprotoday.com/management-mobility/…
PhilT

2

यह थोड़ा सा फैंसी है ... लेकिन यह काम करता है:

चरण 1: एक पॉवर्सशैल प्रोफ़ाइल बनाएँ:

FILE: install_profile.ps1
# THIS SCRIPT BLOWS AWAY YOUR DEFAULT POWERSHELL PROFILE SCRIPT
#   AND INSTALLS A POINTER TO A GLOBAL POWERSHELL PROFILE

$ErrorActionPreference = "Stop"

function print ([string]$msg)
{
    Write-Host -ForegroundColor Green $msg
}

print ""

# User's Powershell Profile
$psdir  = "$env:USERPROFILE\Documents\WindowsPowerShell"
$psfile = $psdir + "\Microsoft.PowerShell_profile.ps1"

print "Creating Directory: $psdir"
md $psdir -ErrorAction SilentlyContinue | out-null

# this is your auto-generated powershell profile to be installed
$content = @(
    "",
    ". ~/Documents/tools/profile.ps1",
    ""
)

print "Creating File: $psfile"
[System.IO.File]::WriteAllLines($psfile, $content)

print ""

# Make sure Powershell profile is readable
Set-ExecutionPolicy -Scope CurrentUser Unrestricted

चरण 2: फिर उपकरण ~ / दस्तावेज़ / उपकरण / profile.ps1 में:

function Do-ActualThing {
    # do actual thing
}

Set-Alias MyAlias Do-ActualThing

चरण 3:

$ सेट-एक्ज़ीक्यूशनपॉलिशी -स्कोप करेंटयूसर अप्रतिबंधित $। ./install_profile.ps1

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