2017-07-11 53 views
0

我有一個問題,我有2個腳本讓名稱,然後first.ps1和second.ps1,他們看起來像PowerShell中加入PARAMS同時結合兩個腳本

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 
} 

和second.ps1

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

Function WriteSecond 
{ 
    Write-Host $log 
} 

現在用C#(使用嵌入的資源,沒有什麼特別的),我想這兩個腳本連接成一個,因爲讓說,他們可以是單獨的模塊從巫婆我可以構建一個最終的SCR ipt例如第一個腳本將執行命令,第二個將讀取控制檯緩衝區輸出。

現在問題是關於嬰兒車,我需要加入然後以某種方式,否則他們加起來本身或可能會覆蓋??

回答

3

您當前設置PowerShell腳本的方式是在腳本級別設置參數,然後在函數中使用它們。

更好的方法是將參數設置爲函數級別。

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 

在從c#check out this post調用這些功能的條款。從它,你可以推斷,powershell.AddScript(...).AddParameter(...)會得到你所要求的,但我相信powershell.AddCommand(...).AddParameter(...)是一個更好的方法。