بوويرشيل - للبدء في عملية ومفاتيح Cmdline
-
19-08-2019 - |
سؤال
ويمكن تشغيل هذه الغرامة:
$msbuild = "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe"
start-process $msbuild -wait
ولكن عند تشغيل هذا الرمز (أدناه) أحصل على خطأ:
$msbuild = "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe /v:q /nologo"
start-process $msbuild -wait
هل هناك طريقة يمكنني تمرير المعلمات إلى MSBuild باستخدام بدء العملية؟ أنا مستعد للا تستخدم بدء العملية، والسبب الوحيد الذي كنت عليه وكنت بحاجة لديها "القيادة" كمتغير.
عند لقد
C: \ WINDOWS \ Microsoft.NET \ الإطار \ V3.5 \ MSBuild.exe / ت: ف / nologo
على خط في حد ذاته، كيف أن تحصل على التعامل معها في بوويرشيل؟
ويجب أن أكون باستخدام نوع من وحدة التقييم) نوع من وظيفة بدلا من ذلك (؟
المحلول
وكنت تريد الذهاب الى فصل حججك إلى المعلمة منفصلة
$msbuild = "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe"
$arguments = "/v:q /nologo"
start-process $msbuild $arguments
نصائح أخرى
$msbuild = 'C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe'
start-Process -FilePath $msbuild -ArgumentList '/v:q','/nologo'
وتحرير:. ونقلت
تحذير
إذا قمت بتشغيل بوويرشيل من نافذة CMD.EXE التي أنشأتها بوويرشيل، مثيل 2ND لم يعد ينتظر فرص العمل لإكمال.
cmd> PowerShell
PS> Start-Process cmd.exe -Wait
والآن من نافذة كمد جديد، تشغيل بوويرشيل مرة أخرى وداخلها بدء نافذة كمد 2ND: CMD2> بوويرشيل
PS> Start-Process cmd.exe -Wait
PS>
والمثيل 2ND من بوويرشيل لم يعد يكرم طلب -Wait وALL عملية خلفية / وظائف العودة "اكتمال" الوضع حتى أنت أنها لا تزال تعمل!
ولقد اكتشفت هذا عندما يستخدم بلدي C # برنامج Explorer لفتح نافذة CMD.EXE وتشغيل PS من تلك النافذة، فإنه يتجاهل أيضا على طلب -Wait. ويبدو أن أي بوويرشيل وهو "العمل Win32 و" من CMD.EXE فشل لتكريم طلب الانتظار.
وأنا واجهت هذا مع بوويرشيل الإصدار 3.0 على ويندوز 7 / إلى x64
ولقد تم العثور عليها باستخدام كمد يعمل بشكل جيد كبديل، وخصوصا عندما تحتاج إلى أنبوب الإخراج من دعا التطبيق (اسبيكالي عندما لا بنينا في قطع الأشجار، وعلى عكس msbuild)
وcmd /C "$msbuild $args" >> $outputfile
ما لم OP يستخدم بوويرشيل ملحقات الجماعة التي لا توفر أمر cmdlet للبدء في عملية جنبا إلى جنب مع مجموعة من غيرها. إذا كان هذا هو الحال بعد ذلك حل Glennular ويعمل على علاج لأنه يتطابق مع معلمات الموضعية من pscx \ بدء عملية: -path (موقف 1) -arguments (positon 2)