powershell.exe
का उपयोग करना एक अच्छा दृष्टिकोण प्रतीत होता है लेकिन इसके पेशेवरों और विपक्ष के साथ।
सकारात्मक:
- प्रत्येक स्क्रिप्ट एक अलग स्वच्छ सत्र में शुरू हो जाती है।
- यहां तक कि दुर्घटनाएं पूरी परीक्षण प्रक्रिया को रोक नहीं देती हैं।
विपक्ष:
powershell.exe
लागू कुछ हद तक धीमी है।
- परीक्षण निकास कोड पर निर्भर करता है लेकिन 0 हमेशा सफलता का मतलब नहीं है।
किसी भी विपक्ष का उल्लेख नहीं किया गया है एक संभावित समस्या के रूप में एक सवाल है।
डेमो स्क्रिप्ट नीचे है। इसका परीक्षण पीएस v2 और v3 के साथ किया गया है।स्क्रिप्ट नाम में स्पेस, एस्ट्रोफ़ेस, ब्रैकेट्स, बैकटीक्स, डॉलर जैसे विशेष वर्ण शामिल हो सकते हैं। टिप्पणियों की आवश्यकता में उल्लिखित एक व्यक्ति को उनके कोड में स्क्रिप्ट पथ प्राप्त करने की क्षमता है। प्रस्तावित दृष्टिकोण स्क्रिप्ट के साथ $MyInvocation.MyCommand.Path
# make a script list, use the full paths or explicit relative paths
$scripts = @(
'.\test1.ps1' # good name
'.\test 2.ps1' # with a space
".\test '3'.ps1" # with apostrophes
".\test [4].ps1" # with brackets
'.\test `5`.ps1' # with backticks
'.\test $6.ps1' # with a dollar
'.\test ''3'' [4] `5` $6.ps1' # all specials
)
# process each script in the list
foreach($script in $scripts) {
# make a command; mind &, ' around the path, and escaping '
$command = "& '" + $script.Replace("'", "''") + "'"
# invoke the command, i.e. the script in a separate process
powershell.exe -command $command
# check for the exit code (assuming 0 is for success)
if ($LastExitCode) {
# in this demo just write a warning
Write-Warning "Script $script failed."
}
else {
Write-Host "Script $script succeeded."
}
}
स्रोत
2012-11-11 07:41:09
के रूप में अपने स्वयं के पथ प्राप्त कर सकते हैं क्या "सबसे अच्छा तरीका यह करने के लिए" मतलब है? इस जानकारी के बिना 'powerhell.exe' के साथ आपका दृष्टिकोण सबसे अच्छा दिखता है। सवाल के मुताबिक, आपको वही चाहिए जो आपको चाहिए। –
मुझे लगता है कि सबसे अच्छा अभ्यास था। आपकी टिप्पणी का तात्पर्य नहीं है, जब तक कि कोई और किसी के बारे में नहीं जानता। 'Powerhell.exe' तरीका मुझे' $ MyInvocation.MyCommand.ScriptBlock.File 'के माध्यम से स्क्रिप्ट का स्थान प्राप्त करने की अनुमति नहीं देता है, जब तक कि मैं कुछ गलत नहीं कर रहा था। – Vimes
असल में, MyInvocation चीज़ काम कर सकती है ... मैं कसम खाता हूं कि यह पहले नहीं था। अब मैं अपने बालों को अंतरिक्ष के साथ पथ स्वीकार करने की कोशिश कर रहा हूं और एक नई विंडो में लॉन्च नहीं कर रहा हूं। मैंने इस पर 10+ घंटे लगाए हैं, इसलिए किसी भी मदद का स्वागत है। – Vimes