सालों से, मैंने cmd/DOS/Windowsबैच फ़ाइलों के लिए शेल और कमांड लाइन तर्क का उपयोग किया है। उदाहरण के लिए, मैं एक फ़ाइल है, zuzu.batऔर उस में, मैं पहुँच %1, %2आदि अब, मैं जब मैं एक फोन भी ऐसा ही करना चाहते हैं PowerShellस्क्रिप्ट when I am in a Cmd.exe shell। मेरे पास एक स्क्रिप्ट है, xuxu.ps1(और मैंने पीएस 1 को अपने पथ चर और पॉवरशेल के साथ संबंधित पीएस 1 फाइलों को जोड़ दिया है)। लेकिन कोई फर्क नहीं पड़ता कि मैं क्या करूं, मुझे $argsचर से कुछ भी प्राप्त करने में असमर्थ लगता है । इसकी लंबाई हमेशा 0 होती है।
अगर मैं PowerShellइसके बजाय एक शेल में हूं cmd.exe, तो यह काम करता है (बेशक)। लेकिन मैं अभी तक पूरी तरह से सहज नहीं हूं ताकि पावरशेल के माहौल में रहूं। मैं टाइप नहीं करना चाहता powershell.exe -command xuxu.ps1 p1 p2 p3 p4। मैं टाइप करना चाहता हूं xuxu p1 p2 p3 p4।
क्या यह संभव है और यदि ऐसा हो तो कैसे?
नमूना जो मुझे काम नहीं मिल सकता है वह तुच्छ है, foo.ps1:
Write-Host "Num Args:" $args.Length;
foreach ($arg in $args) {
Write-Host "Arg: $arg";
}
परिणाम हमेशा इस तरह होते हैं:
C:\temp> foo
Num Args: 0
C:\temp> foo a b c d
Num Args: 0
c:\temp>
xuxu p1 p2 p3 p4")।