PowerShell स्क्रिप्ट कहां डालें?




(3)

(मुझे विश्वास नहीं है कि मैं वास्तव में यह पूछ रहा हूं, लेकिन मैं दिन के लिए दिमागी शक्ति से बाहर हूं।)

मैंने अभी अपनी पहली गंभीर पावरशेल लिपि लिखी है, और मैं इसके साथ वास्तव में खुश हूं। मैं इसे हर दिन या तो इस्तेमाल करने की योजना बना रहा हूं। मैं इसे पॉश कमांड लाइन से कॉल करने में सक्षम होना चाहता हूं। मैं इसे एक क्रिया-संज्ञा प्रकार का नाम दूंगा, लेकिन अभी के लिए यह एक सरल .ps1 है और उन फैंसी उन्नत कार्यों में से एक नहीं है जो पैरा और इस तरह लेते हैं।

तो यह कहां जाना चाहिए और मैं उसे पॉश कमांड लाइन से कैसे कॉल करूं? मैं और लिखने की योजना बना रहा हूं! वे कहाँ जाना चाहिए?

  • क्या यह मेरी प्रोफ़ाइल में एक समारोह होना चाहिए?
  • क्या यह मेरे रास्ते पर जाना चाहिए?
  • क्या यह एक PSMODULEPATH में जाता है? वैसे भी किस तरह की चीजें जाती है? क्या यह बार-बार दिखता है या यह सामान्य पाथ की तरह है?

आप सभी अपनी पावरशेल स्क्रिप्ट कहां डालते हैं और आप उन्हें व्यवस्थित कैसे करते हैं? मुझे सी # और सी ++ उपकरण बनाने का बहुत अनुभव है और पता है कि उन्हें क्या नाम देना है और उन्हें कहां रखा जाए। और दूसरी चरम पर मैंने बहुत सी गड़बड़ी की है। बैट फाइलें जो आमतौर पर कुछ फ़ोल्डर में एक ढेर में स्टैंडअलोन या ढेर होती हैं। लेकिन पावरशेल बहुत अलग दिखता है। आप वास्तव में जल्दी से क्रैपी .bat फ़ाइल प्रकार की चीजें बना सकते हैं, या आप इसके साथ पुस्तकालयों और परिष्कृत सेवाओं का निर्माण कर सकते हैं।

मैं वास्तव में कुछ विचारों से प्यार करता हूं कि मुझे शुरू करने से पहले इन चीजों को व्यवस्थित करना शुरू करना चाहिए। जाहिर है सब लोग अलग हैं, इसलिए मैं कुछ चर्चा की उम्मीद कर रहा हूं। धन्यवाद!


मेरी सिफारिशें: - स्क्रिप्ट को अपनी इच्छानुसार निर्देशिका में स्टोर करें, उदाहरण के लिए c: \ posh - निर्देशिका को env में जोड़ें: पथ

$env:path += ";c:\posh"

यह सुनिश्चित करता है कि आप अन्य निर्देशिका में हो सकते हैं, c: \ windows कहें, लेकिन आप स्क्रिप्ट को कॉल कर सकते हैं

[c:\windows] > sampl[TAB] # it expands the name of file to sample.ps1, then hit enter

यदि आपकी फ़ाइल sample.ps1 में फ़ंक्शंस परिभाषाएं हैं और आप इसे हर बार आयात करते हैं, तो मैं इस लाइन को आपकी $ प्रोफ़ाइल फ़ाइल में जोड़ने पर विचार करूंगा

. c:\posh\sample.ps1

स्क्रिप्ट संगठन के बारे में .. स्क्रिप्ट के उद्देश्य के अनुसार बस कई dirs :) व्यक्तिगत, देव, बाहरी (डाउनलोड), नमूने, ...


मैं यह करता हूं:

नोट: सार्थक कुछ के लिए विकल्प "मॉड्यूलनाम"।

मॉड्यूल बनाएं और इसे वैश्विक मॉड्यूल फ़ोल्डर में "सी: \ विंडोज \ System32 \ WindowsPowerShell \ v1.0 \ मॉड्यूल \ मॉड्यूलनाम \ ModuleName.psm1" के रूप में सहेजें। उदाहरण के लिए:

function global:FancyFunction() {
   # do something interesting here.
}

Export-ModuleMember -function FancyFunction 

अपनी पावरहेल प्रोफ़ाइल खोलें और यह सुनिश्चित करने के लिए निम्न पंक्ति जोड़ें कि हर बार जब आप पावरहेल सत्र शुरू करते हैं तो आपका मॉड्यूल लोड हो जाता है:

Import-Module ModuleName -Force

आप टाइप करके अपनी पावरहेल प्रोफाइल को आसानी से ढूंढ सकते हैं:

notepad $profile

जब आप एक नया पावरहेल सत्र खोलते हैं, तो आपको कुछ भी करने के बिना कंसोल से या अन्य स्क्रिप्ट से अपने फ़ंक्शन को कॉल करने में सक्षम होना चाहिए।


वी 2 के साथ, आप WindowsPowerShell निर्देशिका में एक मॉड्यूल निर्देशिका बना सकते हैं जहां आपकी प्रोफ़ाइल है। जब आप आयात-मॉड्यूल चलाते हैं तो पीएस स्वचालित रूप से मॉड्यूल लोड करने के लिए उस निर्देशिका में दिखाई देगा। मैंने WindowsPowerShell के तहत एक "स्क्रिप्ट" निर्देशिका बनाई है साथ ही यह मॉड्यूल की एक भाई निर्देशिका है।

मैं निम्नलिखित कोड के साथ चर का उपयोग कर कुछ निर्देशिका सेट करने के लिए अपनी प्रोफ़ाइल का उपयोग करता हूं:

PS>  cat $Profile
$scripts = "$(split-path $profile)\Scripts"
$modules = "$(split-path $profile)\Modules"
$docs    =  $(resolve-path "$Env:userprofile\documents")
$desktop =  $(resolve-path "$Env:userprofile\desktop")

PS> cat variable:\scripts
C:\Users\andy.schneider\Documents\WindowsPowerShell\Scripts

PS>  cat variable:\modules
C:\Users\andy.schneider\Documents\WindowsPowerShell\Modules




powershell