2016-05-26 5 views
2

also es gibt viele ähnliche Themen, die ich gefunden habe, aber ich kann nichts finden, das mit meinem Problem korreliert.Powershell: Wie übergeben Sie den Parameter mit invoke-command und -filepath remote?

Ich rufe eine für ein Skript, das auf meinem lokalen Computer gespeichert ist, auf einem anderen Server ausgeführt werden. Alles funktioniert wie vorgesehen, außer dass die Variable "configPath" übergeben wird. So initiiere ich das Skript -

Es ergreift korrekt alle anderen Parameter, die ich in das erste Skript übergebe. Es übergibt den configPath einfach nicht an das zweite Skript im 'Dateipfad'.

Wie kann ich diesen Parameter durchlaufen? Vielen Dank.

Antwort

1

In script2.ps1 sollten Sie einen param() Block definieren, der den Parameter akzeptiert, und Sie können dann auf den Namen verweisen, den Sie ihm geben. Wenn Sie keinen param() Block verwenden möchten, sollte die Verwendung von $args[0] funktionieren.

+0

Ja, ich kontrolliere/erstellt alle Skripte in diesem Prozess. Ich bin verwirrt, warum Sie es in der 3. Position aufgeführt haben? Ich gebe nur ein Argument an das Skript weiter, das auf dem Remote-Server initiiert wird, also wäre es nicht einfach -ArgumentList $ configPath? Ich verstehe, was Sie damit meinen, kennt keine Namen - wie nenne ich es dann in meinem anderen Skript? Argumente [0] oder etwas? Muss ich es auch in der Liste param() im Skript aufführen, das es aufruft? Danke noch einmal. – crystallinity

+0

Ich habe es in der dritten Position, weil Ihr Beispielaufruf es in der dritten Position zeigt, aber seine tatsächliche Position basiert auf, wo es im param Block des angerufenen Skripts definiert ist (es könnte auch mit einer bestimmten Position definiert werden, um das reguläre zu überschreiben) Auftrag). – briantist

+0

Oh ich denke ich sehe was jetzt passiert. 'script1.ps1' enthält den Aufruf 'Invoke-Command' und' script2.ps1' ist ein anderes Skript. In diesem Fall sollten Sie in 'script2.ps1' einen' param() '-Block definieren, der den Parameter akzeptiert, und Sie können dann auf den Namen verweisen, den Sie ihm geben. Wenn Sie keinen 'param()' Block verwenden wollen, sollte '$ args' funktionieren. – briantist

Verwandte Themen