سؤال

ويمكن تشغيل هذه الغرامة:

$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)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top