2016-09-12 6 views
0

てexeファイルのアプリケーションにそれらを渡す引数の順序に配列を変換しますPowerShellの:私はOctopushダッシュボードで動作するタコのダッシュボード

enter image description here

コードのスクリーンショットには、私のTFSの変更セットのリストをもたらします。 私はすでに私のIDのリストを持っています。 私はいくつかのexeファイルを実行するとC#を通じて、次のように、このexeファイル にパラメータを渡す必要があります。

start "" "\\ptnas1\home_dirs\michaelb\Documents\Visual Studio 2015\Projects\Changesetes\Changesetes\bin\Debug\Changesetes.exe" "Test proj name" 3.22.652.965863 QA false 463841 464268 463450 463841 463167 458908 462917 
pause 

私は私のハードbetwwen結合する必要があります。それはこのように動作

string cParams = "\"Test proj name\" " + "3.22.652.965863 " + "QA " + "false " + "463841" + " 464268" + " 463450" + " 463841" + " 463167" + " 458908" + " 462917" + " 462780" + " 462429" + " 461225" + " 460414"; 
     var proc = System.Diagnostics.Process.Start(@"\\ptnas1\home_dirs\michaelb\Documents\Visual Studio 2015\Projects\Changesetes\Changesetes\bin\Debug\Changesetes.exe", cParams); 

またはPowerShellの

"proj name"、 "version num"、 "string1"、 "false"と受け取ったIDのリストをコード化したargements。 Powershellでどのように動作させることができますか?

+0

何が問題になっていますか? Powershell実行ポリシーは? .exeの呼び出し?パラメータを渡す?または特定のアプリケーションですか?あなたは「これはうまくいく」と言って、「うまくいく方法」を尋ねるので、質問が何であるか混乱します。 –

+0

PowerShellの[Invoke-Expression](https://technet.microsoft.com/de-de/library/hh849893.aspx)を見て、コードをビルドしてから、invoke-expressionコマンドで実行することができます。 –

+0

申し訳ありませんが、私は泣きました。 質問を編集しました。 私は動的配列といくつかの定数の間で結合し、私のexeにarguemntsとして渡す必要があります。 IDのリストは常に引数リストの最後にあるべきです。 –

答えて

1
$Exe = '\\ptnas1\home_dirs\michaelb\Documents\Visual Studio 2015\Projects\Changesetes\Changesetes\bin\Debug\Changesetes.exe' 
$Params = "Test proj name " + "3.22.652.965863 " + "QA " + "false " + "463841" + " 464268" + " 463450" + " 463841" + " 463167" + " 458908" + " 462917" + " 462780" + " 462429" + " 461225" + " 460414" 
&$Exe $Params 

は、あなたのネイティブコマンドに依存して、あなたはあなたの例を使用して、配列最初

$Params = "Test proj name","3.22.652.965863","QA ","false" [etc.] 
&$Exe $Params 

としてのparamsに参加する必要があるかもしれません、あなたはまだSystem.Diagnostics.Processを使用し続けることができます。

[System.Diagnostics.Process]::Start($Exe,$Params) 

別のオプションでWMIを使用しています。

([WMICLASS]"ROOT\CIMV2:Win32_Process").Create("$Exe $Params") 

そしてもちろんのPowerShellのStart-Process-ArgumentListパラメータ

EDIT

$Exe = `\\ptnas1\home_dirs\michaelb\Documents\Visual Studio 2015\Projects\Changesetes\Changesetes\bin\Debug\Changesetes.exe` 
$Constants = "Test proj name","3.22.652.965863","QA" etc. 
$Dynamic = "462917","462780","462429","461225","460414" 

&$Exe $Constants $Dynamic 

またはその他の実行オプションの1

+0

最後の答えはうまくいくように見えます。 ありがとうございます。 私はそれを試してみるつもりです。 –

+0

動作しません。 $ Exe、$ Constants、$ Dynamicについても同じ例外があります。 は、内部コマンドまたは外部コマンドとして認識されません。 –

+0

どのような例外はありますか? – Avshalom

0
$argumentList = "`"Test proj name`" 3.22.652.965863 QA false 463841 464268 463450 463841 463167 458908 462917" 
    start-process -FilePath "\\ptnas1\home_dirs\michaelb\Documents\Visual Studio 2015\Projects\Changesetes\Changesetes\bin\Debug\Changesetes.exe" -ArgumentList $argumentList 
+0

変数$ projName、$ version、$ envNameおよび$ resolveのIDチェンジセットのディナミック配列をどのように連結できますか? 何かのように: $ params = $ projName + $ version + $ envName + $ resolve + $ changesets? –

0
を使用し、あなたの定数および動的な変数を分離

01で示唆されたコードに基づく私の答えそれが変更されました:

$Exe = `\\ptnas1\home_dirs\michaelb\Documents\Visual Studio 

2015\Projects\Changesetes\Changesetes\bin\Debug\Changesetes.exe` 
$Constants = "Test proj name","3.22.652.965863","Dev","false" 
$Dynamic = "462917","462780","462429","461225","460414" 

$all = $Constants + $Dynamic | select -uniq 

&$Exe $all 

問題は、このようにconcoleアプリケーションを.NETする2つのパラメータを渡すことは不可能であるということである。

$Exe = `\\ptnas1\home_dirs\michaelb\Documents\Visual Studio 2015\Projects\Changesetes\Changesetes\bin\Debug\Changesetes.exe` 
$Constants = "Test proj name","3.22.652.965863","QA" etc. 
$Dynamic = "462917","462780","462429","461225","460414" 

&$Exe $Constants $Dynamic 

アプリケーションがその最後の引数を受け取ることはありませんので。私はpowershellがちょうど第2のものを無視すると思います。

関連する問題