2012-11-07 18 views
7

पर तर्कों की सरणी कैसे पारित करें मैं पावरहेल स्क्रिप्ट फ़ाइल में तर्कों की सरणी पास करने का प्रयास कर रहा हूं।पावरहेल कमांडलाइन

मैं कमांड लाइन में इस तरह की कमांडलाइन पास करने की कोशिश कर रहा था।

Powershell -file "InvokeBuildscript.ps1" "Z: \" "Component1", "component2"

लेकिन यह पैरामीटर ऐसा लगता नहीं लेता है। मैं क्या खो रहा हूँ? तर्कों की सरणी कैसे पास करें?

उत्तर

6

Powershell -command "c:\pathtoscript\InvokeBuildscript.ps1" "z:\" "Component1,component2" 

कोशिश करता है, तो test.ps1 है: एक डॉस से

$args[0].GetType() 
$args[1].gettype() 

कॉल यह कवच की तरह:

C:\>powershell -noprofile -command "c:\script\test.ps1" "z:" "a,b" 

रिटर्न:

IsPublic IsSerial Name          BaseType 
-------- -------- ----          -------- 
True  True  String         System.Object 
True  True  Object[]         System.Array 
8

लघु जवाब: अधिक दोहरे उद्धरण चिह्नों मदद कर सकता है ...

लगता स्क्रिप्ट "test.ps1" है

param(

    [Parameter(Mandatory=$False)] 
    [string[]] [email protected]() 

) 
$PSBoundParameters 

मान लीजिए सरणी @ (123 पारित करने के लिए चाहते हैं, "abc", " एक्स, वाई, जेड ")

PowerShell कंसोल के तहत, एक सरणी

.\test.ps1 -input_values 123,abc,"x,y,z" 

विंडोज कमांड प्रॉम्प्ट कंसोल के तहत या Windows टा के लिए के रूप में एक से अधिक मान पारित करने के लिए स्क शेड्यूलर; एक दोहरे-उद्धरण 3 डबल उद्धरण

powershell.exe -Command .\test.ps1 -input_values 123,abc,"""x,y,z""" 

ने ले ली है आशा है कि यह कुछ

+1

मदद कर सकता है चाल यहाँ -command' बजाय '-file' की' स्पष्ट उपयोग करने के लिए है। –