2009-07-08 53 views
4

裏面我有一個批處理文件,它將調用PowerShell腳本:如何從批處理文件中的參數傳遞給一個函數PowerShell腳本

批處理文件: @ECHO OFF PowerShell的.. \ PowerShellScript。 PS1

反過來PowerShell腳本有需要一個參數的函數:

PowerShell腳本:

function PSFunction([string]$Parameter1) 
{ 
Write-Host $Parameter1 
} 

可以說我有一個值:VALUE1需要從調用PowerShellScript.ps1的批處理文件中傳遞,我如何將它傳遞給函數PSFunction以便我的輸出爲VALUE1?

回答

6

修改你的腳本如下所示

function PSFunction([string]$Parameter1) 
{ 
    Write-Host $Parameter1 
} 

PSFunction $args[0] 

,並從批處理文件,它看起來像

powershell ..\PowerShellScript.ps1 VALUE1 
+0

以及如何從批處理文件傳遞參數值「VALUE1」? – 2009-07-08 20:32:37

3

在PowerShell腳本中定義一個函數並執行功能。如果你想要的,那麼你的腳本可能需要看起來像:

function PSFunction([string]$Parameter1) 
{ 
    Write-Host $Parameter1 
} 
PSFunction "some string" 

從腳本中,你仍然有一個動態的變量$args得到您傳遞到腳本的任何參數。所以

function PSFunction([string]$Parameter1) 
{ 
    Write-Host $Parameter1 
} 
PSFunction $args[0] 

會將您在命令行上給出的第一個參數傳遞給該函數。

4

使用-Co​​mmand開關告訴powershell.exe解釋一個字符串,就好像它是在PowerShell提示符下鍵入的一樣。在你的情況,該字符串可以點源PowerShellScript.ps1(將其導入到新的powershell.exe環境),然後用VALUE1調用PSFunction作爲參數:

set VALUE1=Hello World 
powershell.exe -command ". ..\PowerShellScript.ps1; PSFunction '%VALUE1%'" 
1

在我看來,你應該簡單選擇要使用的內容 - 批處理文件或PowerShell)PowerShell功能更強大,但批處理文件更容易創建(特別是使用Dr.Batcher),並且可以在任何地方運行。

相關問題