पावरशेल के साथ, यदि आप 'पथ' पर्यावरण चर में निहित निर्देशिकाओं में रखे गए हैं तो आप स्क्रिप्ट को कमांड के रूप में निष्पादित कर सकते हैं। क्या निर्देशिका पथ में हैं देखने के लिए, आप का उपयोग कर सकते हैं:
$env:Path -split ';'| sort
आप अपने लिपियों के स्थान शामिल करने के लिए विंडोज 'सिस्टम गुण से स्थायी रूप से पथ को संशोधित कर सकता है, या आप अस्थायी रूप से अपनी प्रोफ़ाइल से पथ को संशोधित कर सकता है या लिपि। अपने विशेष मामले में, आप पथ के लिए प्रोफ़ाइल निर्देशिका जोड़ने के लिए अपने प्रोफ़ाइल के लिए निम्न जोड़ सकते हैं:
PS >$timer = New-Object Timers.Timer
PS >Register-TemporaryEvent $timer Disposed { [Console]::Beep(100,100) }
नोट::
$ScriptRoot = Split-Path $SCRIPT:MyInvocation.MyCommand.Path
if(($env:Path -split ';') -notcontains $ScriptRoot) {
$env:Path += ';' + $ScriptRoot
}
फिर आप के रूप में कमांड चला सकते हैं जब टैब को पूरा करने, यह Register-TemporaryEvent.ps1
के रूप में पूरा हो जाएगा, लेकिन आप '.ps1' को हटा सकते हैं और यह अभी भी काम करेगा।
क्या यह अभी भी सच है? मेरे पास मेरे PATH के अंदर एक फ़ोल्डर है जिसमें .ps1 फ़ाइलें हैं, मेरे PATHEXT में .ps1 एक्सटेंशन, और जब मैं स्क्रिप्ट को इसके नाम से आमंत्रित करने का प्रयास करता हूं, तो मुझे "शब्द 'foo' को नाम के रूप में पहचाना नहीं जाता है cmdlet, फ़ंक्शन, स्क्रिप्ट फ़ाइल, या ऑपरेट करने योग्य प्रोग्राम। " (लेकिन यह एक cmd प्रॉम्प्ट से काम करता है) – zneak
यह हमेशा मेरे लिए सभी PowerShell संस्करणों में v2 से v5 के लिए काम करता है। यदि आप पावरहेल प्रॉम्प्ट पर '$ env: पथ' दर्ज करते हैं, तो क्या आप वहां फ़ोल्डर देखते हैं? हो सकता है कि पथ को स्थायी रूप से जोड़ा नहीं गया था या पाथ बदल दिया गया था क्योंकि explorer.exe को पुनरारंभ नहीं किया गया है। इसके अलावा, स्क्रिप्ट को पावरहेल से कॉल करने के लिए .ps1 को PATHEXT में होने की आवश्यकता नहीं है। – Rynant