Probleme mit den Powershell-Start-Prozess-Parametern

3

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 alles 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 fehle ich?

JimmyP
quelle

Antworten:

5
Get-Command -syntax Start-Process

gibt zwei Einträge an (manuelles Umbrechen hinzugefügt und Entfernen gemeinsamer Parameter):

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>]

Geben Sie in Ihren Arbeitsfällen entweder an -RedirectStandardOutput oder -WindowStyle Identifiziert eindeutig, welcher Parametersatz verwendet werden soll.

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

Richard
quelle
Ahhh ich verstehe. Danke ... also keine Möglichkeit, in einem versteckten Fenster zu laufen und die Ausgabe dann umzuleiten, oder?
JimmyP
@JimmyP: Nicht mit dem Cmdlet (direkte Verwendung von [System.Diagnostics.Process] ermöglicht mehr Kontrolle, aber unklar, wie einfach die Umleitung auf dieser Ebene in PSH ist. Natürlich ist die Kombination von Standardausgabe und GUI in sehr selten Windows ...
Richard