2015-06-23 42 views
1

首次使用PowerShell。如何將函數輸出傳遞給powershell中的另一個函數?

我試圖找到一種方法來使用函數輸出作爲另一個函數的輸入。

有關示例,

Function TK 
{ 
    param ([int]$OTK) 

    $TK = $OTK * 2 

    write-host "TK $TK" 
} 

Function MAT 
{ 
    param ([int]$OMAT) 

    $MAT = $OMAT * $TK /5 

    write-host "MAT $MAT" 
} 

的想法是創建一個腳本或模塊獨立地調用不同的函數。它從第一個函數開始,並將輸出傳遞給另一個函數作爲輸入。 函數可以獨立運行或按順序運行。

任何示例?

回答

2

函數的所有輸出傳遞給管道。那全是輸出。您正在使用write-host,它僅用於在控制檯上顯示。使用Write-Output或者只是將命令寫出來。我還建議你看看about_functions

不完全確定問題是什麼,但問題的標題我會做這樣的事情。

Function TK 
{ 
    param ([int]$OTK) 
    $OTK * 2 
} 

Function MAT 
{ 
    param ([int]$OMAT, $TK) 
    $OMAT * $TK /5 
} 

$OMAT * $TK /5也可以理解爲Write-Output $OMAT * $TK /5。它們在功能上是相同的。

我爲MAT函數添加了另一個參數,用於第二個值$TK。您可以使用global關鍵字來聲明變量,但這一點很簡單明瞭。這將是一個示例函數調用,它把結果輸出10

MAT 5 (TK 5) 

表達(TK 5)被評估然後發送作爲功能MAT第二值。您也可以使用變量作爲中間人,但除非您需要多次使用函數調用輸出,否則這將是多餘的。

$result = TK 5 
MAT 5 $result 

您也可以像調用任何cmdlet一樣調用另一個函數。在調用它之前聲明該函數是很重要的。

Function MAT 
{ 
    param ([int]$OMAT) 
    $OMAT * TK /5 
} 

注意以上代碼中的「TK」將調用函數TK

+0

謝謝馬特。仍然需要問你一些事情。如果還有一個函數,腳本的格式應該是:param([int] $ OMAT,$ TK,$ XX)並且調用MAT 5(TK 5 XX 5)?或不同的格式? – rock

+0

每個單獨的參數必須至少由空格分隔。如果您需要表達式,可以將表達式括在括號中。根據你的評論,你的電話將是'MAT 5(TK 5)(XX 5)'如果你有一個_separate_函數叫做TK和XX, – Matt

相關問題