2016-07-19 8 views
0

ChocolyインストーラをPowerShellにバンドルしました。私のスクリプトは、インストールプロセスのための関数を呼び出します。ユーザーはPowerShellで.\install.ps1を実行するはずです。パッケージがすでにインストールされている場合、出力は次のようになります。ラッパースクリプトでChocolateyの警告メッセージを書き換えてください。

<Packagename> already installed. 
Use --force to reinstall, specify a version to install, or try upgrade. 

[OK]を、ので、ユーザは.\install.ps1 --forceがトリックを行うだろうと思うはずです。残念ながら、私はPowerShellは、二重ダッシュ(--)を受け入れるための方法を見つけていないので、私はそれが-force代わりの--forceを出力してChocolateyから警告メッセージを書き換えることを考えている:

<Packagename> already installed. 
Use -force to reinstall, specify a version to install, or try upgrade. 

マイsetup.ps1ファイルがに似ています:

Install-App <Packagename + parameters> 

私のスクリプトを呼び出している関数は次のようになります

function Install-App 
{ 
    //..code ommited.. 
    $chocoCommand = "choco install <Packagename + parameters>" 
    iex $chocoCommand 
} 

私はtry/catchについて考えてきたが、まだそれを理解していない。

提案がありますか?

敬具

+0

_残念ながら、私はPowerShellがダブルダッシュを受け入れる方法がないことを知っています_ - 何を試しましたか? foreachの($ $の引数のArg) {IF($引数-eq "--force") {$ forceParameter = "--force" }}:いくつかのさらなる調査に – rrirower

+0

は、私はこれを発見しました 質問が発生しました:これは良い解決策ですか? $ forceParameterを自分の関数に簡単に渡すことができます。 –

+0

複数の引数を渡しますか? – rrirower

答えて

0

から撮影

私は$ argsを上のforeachを行うことで、これを解決:

foreach($arg in $args) 
{ 
    if($arg -eq "--force" -Or $arg -eq "-force") 
    { 
     $forceParameter = "--force" 
    } 
} 

、さらに私のPowerShellコマンドに助けを

MyCustomCommand -forceParameter $forceParameter 

おかげでこれを渡します!

関連する問題