Powershell-Startprozess-Parameterprobleme

5862
JimmyP

Wahrscheinlich eine totale Noob-Frage, aber:

Wenn ich renne

Start-Process ".\packages\PS-Get.0.1.0.0\NuGet.exe" update -RedirectStandardOutput ".\packages\PS-Get.0.1.0.0\NuGet.exe.Update.log" -RedirectStandardError ".\packages\PS-Get.0.1.0.0\NuGet.exe.Update.log" -WindowStyle Hidden 

Ich bekomme den Fehler

Start-Process : Parameter set cannot be resolved using the specified named parameters. At line:1 char:14 + Start-Process <<<< ".\packages\PS-Get.0.1.0.0\NuGet.exe" update -RedirectStandardOutput ".\packages\ PS-Get.0.1.0.0\NuGet.exe.Update.log" -RedirectStandardError ".\packages\PS-Get.0.1.0.0\NuGet.exe.Update.log" -WindowStyle Hidden + CategoryInfo : InvalidArgument: (:) [Start-Process], ParameterBindingException + FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.PowerShell.Commands.StartProcessCommand 

Aber alle von:

Start-Process ".\packages\PS-Get.0.1.0.0\NuGet.exe" update -RedirectStandardOutput ".\packages\PS-Get.0.1.0.0\NuGet.exe.Update.log"  Start-Process ".\packages\PS-Get.0.1.0.0\NuGet.exe" update -RedirectStandardError ".\packages\PS-Get.0.1.0.0\NuGet.exe.Update.log"  Start-Process ".\packages\PS-Get.0.1.0.0\NuGet.exe" update -WindowStyle Hidden 

Arbeit gut ... was fehlt mir?

3

1 Antwort auf die Frage

5
Richard
Get-Command -syntax Start-Process 

gibt zwei Einträge (manuelles Wrapping hinzugefügt und allgemeine Parameter entfernt):

Start-Process [-FilePath] <String> [[-ArgumentList] <String[]>] [-Credential <PSCredential>] [-WorkingDirectory <String>] [-LoadUserProfile] [-NoNewWindow] [-PassThru] [-RedirectStandardError <String>] [-RedirectStandardInput <String>] [-RedirectStandardOutput <String>] [-Wait] [-UseNewEnvironment]   Start-Process [-FilePath] <String> [[-ArgumentList] <String[]>] [-WorkingDirectory <String>]  [-PassThru] [-Verb <String>] [-Wait]  [-WindowStyle <ProcessWindowStyle>] 

In Ihren Arbeitsfällen wird durch Angabe von -RedirectStandardOutputoder -WindowStyleeindeutig festgelegt, welcher Parametersatz verwendet werden soll.

In Ihrem nicht funktionierenden Fall haben Sie beide dieser Parameter, aber es gibt keinen Parametersatz, der beide enthält. Daher kann PSH keinen Parameter auswählen.

Ahhh ich verstehe. Danke ... also keine Möglichkeit, in einem versteckten Fenster zu laufen und die Ausgabe dann umzuleiten, oder? JimmyP vor 13 Jahren 0
@JimmyP: Nicht mit dem Cmdlet (direkt unter Verwendung von [System.Diagnostics.Process]) wird mehr Kontrolle möglich sein, es ist jedoch unklar, wie einfach auf diese Ebene in PSH umgeleitet werden kann. Natürlich ist die Kombination aus Standardausgabe und einer grafischen Benutzeroberfläche ziemlich selten Windows ... Richard vor 13 Jahren 0