2017-07-11 5 views
0

Ich habe eine Frage, habe ich ein 2-Skripte Name lässt dann first.ps1 und second.ps1 und sie sehen so etwas wiePower params Verbindungs ​​während zwei Skripte Kombination

first.ps1:

param(
    [parameter(Mandatory=$True,ValueFromPipeline=$True)][string]$filename="", 
    [parameter(Mandatory=$True,ValueFromPipeline=$True)][string]$arguments="" 
) 

Function WriteFirst 
{ 
    Write-Host $filename 
    Write-Host $arguments 
} 

und second.ps1

param(
    [parameter(Mandatory=$True,ValueFromPipeline=$True)][string]$log="" 
) 

Function WriteSecond 
{ 
    Write-Host $log 
} 

Jetzt mit C# (eingebettete Ressource verwendet wird, nichts besonderes) ich möchte diese beiden Skripte in einem verbinden, so können sagen, dass sie separate Module von Hexe sein kann ich eine letzte scr konstruieren ipt zum Beispiel führt das erste Skript den Befehl aus und der zweite liest den Konsolenpuffer für die Ausgabe.

Jetzt ist Frage über den Kinderwagen, muss ich mich dann irgendwie anschließen oder werden sie sich selbst ergänzen oder vielleicht außer Kraft setzen ??

Antwort

3

Die Art und Weise, wie Sie die PowerShell-Skripte gerade einrichten, besteht darin, die Parameter auf der Ebene Skript festzulegen und sie dann in der Funktion zu verwenden.

Ein besserer Ansatz wäre die Parameter Funktion Ebene zu haben.

param(
    [parameter(Mandatory=$True,ValueFromPipeline=$True)][string]$filename="", 
    [parameter(Mandatory=$True,ValueFromPipeline=$True)][string]$arguments="" 
) 

Function WriteFirst 
{ 
    param(
     [parameter(Mandatory=$True,ValueFromPipeline=$True)][string]$filename="", 
     [parameter(Mandatory=$True,ValueFromPipeline=$True)][string]$arguments="" 
    ) 

    Write-Host $filename 
    Write-Host $arguments 
} 

WriteFirst -filename $filename -arguments $arguments 

In Bezug auf die Funktionen von c#, check out this post aufrufen. Daraus können Sie schließen, dass powershell.AddScript(...).AddParameter(...) Sie bekommen wird, wonach Sie fragen, aber ich glaube, dass powershell.AddCommand(...).AddParameter(...) ein besserer Ansatz ist.