2017-05-29 91 views
0

我試圖從調用PowerShell腳本的Windows運行時傳遞一些參數。看起來像這樣: myscript「一些參數」,「其他」 這甚至可能嗎?如果是這樣,我怎麼能從它的參數到powershell腳本並使用它們? 到目前爲止,我得到了如何通過使用參數的「ValueFromPipelineByPropertyName」選項通過cmd詢問用戶輸入參數,但它不是我想要的。 在此先感謝。從powershell中運行的窗口參數

回答

1

PowerShell的本質提供了處理腳本參數有兩種方式:

  • automatic variable$args持有的所有參數的列表,然後可以通過索引來訪問:

    腳本:

    "1st argument: " + $args[0] 
    "2nd argument: " + $args[1] 
    "3rd argument: " + $args[2] 
    

    調用:

    powershell.exe -File .\script.ps1 "foo" "bar" 
    

    輸出:

     
    1st argument: foo 
    2nd argument: bar 
    3rd argument: 
    
  • 一個Param() section在腳本的開頭獲取分配給各個變量的參數值:

    腳本:

    Param(
        [Parameter()]$p1 = '', 
        [Parameter()]$p2 = '', 
        [Parameter()]$p3 = '' 
    ) 
    
    "1st argument: " + $p1 
    "2nd argument: " + $p2 
    "3rd argument: " + $p3 
    

    調用:

    powershell.exe -File .\script.ps1 "foo" "bar" 
    

    輸出:

     
    1st argument: foo 
    2nd argument: bar 
    3rd argument: 
    

但是,如果您希望能夠在不顯式運行powershell.exe命令的情況下調用PowerShell腳本,則需要更改註冊表中Microsoft.PowerShellScript.1類型的默認操作。您可能還需要調整系統上的執行策略(Set-ExecutionPolicy RemoteSigned -Force)。

通常情況下,您只能對非常簡單的場景使用$args(少量參數按照定義良好的順序)。完整的參數定義使您可以更好地控制參數處理(可以使參數可選或強制,定義參數類型,定義默認值,進行驗證等)。

+0

這正是我所尋找的。謝謝:) –

0

我幾乎不明白你的問題。下面是一個試圖接近你想要的東西..

您嘗試通過Windows CMD調用PowerShell腳本,像這樣:

powershell.exe myscript.ps1 parameter1 parameter2 anotherparameter 

以上是你如何利用未命名參數。 你也可以看看命名參數,就像這樣:

Powershell.exe myscript.ps1 -param1 "Test" -param2 "Test2" -anotherparameter "Test3" 

您可以使用「設置」,在CMD接受來自用戶的輸入,像這樣:

set /p id="Enter ID: " 

在PowerShell中您可以使用閱讀-host,像這樣:

$answer = Read-Host "Please input the answer to this question" 
+0

上命名參數進一步閱讀:http://powershell-guru.com/powershel l-best-practice-2-use-named-parameters-not-positions-and-partial-parameters/ –

0

在腳本的聲明你要傳遞的參數上,這裏是從我的build.ps1

param (
    [string] $searchTerm, 
    [ValidateSet('Remote', 'Local')][string] $sourceType = 'local', 
    [switch] $force 
) 

Write-Host $searchTerm 

一個例子吧,您可以將您的參數或者由順序:

build.ps1 '1234' local -force 

或與名爲paramters

build.ps1 -searchTerm '1234' -sourceType local -force 
+0

我試過這樣做,但沒有奏效。也許我錯過了什麼 –

相關問題