2017-10-06 22 views
0

私は、オンデマンドでElasticSearch's Support Diagnosticsツールを実行するPowerShellスクリプトを作成しています。PowerShellのパラメータを使用してバッチコマンドを実行する方法

私のコードは次のとおりです。 ES.Config.xml - PowerShellから実行する診断コマンドを格納するxmlファイルです。その文字列として保存された(DEV.Diagnostic.ExecuteCommand参照:

Invoke-Expression -Command $global:DiagnosticCommand 

グローバル$::私のPowerShellスクリプトでは

<DEV> 
<Diagnostic FolderPath="" ExecuteCommand="C:\ElasticSearch\support-diagnostics-5.12\diagnostics.bat --host localhost --port 9200 --user elastic -p" /> 

を私のようにコマンドを実行しようとしているDiagnosticCommandは、グローバル変数であります"C:¥ElasticSearch¥support-diagnostics-5.12¥diagnostics.bat --host localhost --port 9200 --user elastic -p"という値を格納しています。アドバイスをいただければ幸いです。

+1

**私は常にエラー... **を取得しますか?それはどこから来ますか? 'powershell'または[diagnostics.bat](https://github.com/elastic/elasticsearch-support-diagnostics/blob/master/scripts/diagnostics.bat)または' java'から?質問を編集して完全なトレースバックを提供してください。 – JosefZ

+0

'call'演算子を見ることをお勧めします。 – Eris

+0

次のエラーは次のとおりです。エラー:メインクラスcom.elastic.support.diagnostics.DiagnosticAppが見つかりませんでした。 –

答えて

0

これを使用するコンテキストを確認することはできません。おそらく以下の例が役立ちます。私はあなたを助けるかもしれない2つの主要なコマンドレットを見た。私はあなたがArgumentListはや-ScriptBlockのいずれかのパラメータとの完全なパスを指すことができますがあなたのケースでは

Start-Process -FilePath C:\Windows\SysWOW64\mstsc.exe -ArgumentList "/?" 
Start-Process -FilePath msiexec.exe -ArgumentList "/?" 

Invoke-Command -ScriptBlock {C:\Windows\SysWOW64\mstsc.exe /?} 
Invoke-Command -ScriptBlock {msiexec.exe /?} 

{あなたの完全な実行可能ファイルと、ここでパラメータを入力}、明示的なパスを必要としない例に置くことができますあなたは以下を試してみませんか?

Invoke-Command -ScripBlock{ 
C:\ElasticSearch\support-diagnostics-5.12\diagnostics.bat --host localhost --port 9200 --user elastic -p} 

あなたは、両方のコマンドレットの完全TechNetのホワイトペーパーを参照することができます。どのようなエラー: https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Management/Start-Process?view=powershell-5.1

https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Core/Invoke-Command?view=powershell-5.1

+0

スクリプトを実行すると、次のエラーが表示されます。C:\ ElasticSearch \ support-diagnostics-5.12 \ diagnostics.bat --host localhost --port 9200 - ユーザーのelastic -pフォルダが存在する JAVA_HOMEが見つかりました。C: \ Program Files \ Java \ jre1.8.0_141 Error:メインクラスcom.elastic.support.diagnostics.DiagnosticAppを見つけられない、またはロードできませんでしたが、独自のコマンドウィンドウでこのコマンドを実行すると、正常に実行されます。 –

+0

「メインクラスcom.elastic.support.diagnostics.DiagnosticApp」が見つかりませんでした。Javaからのエラーです.Javaのスキルは、エンドツーエンドのトラブルシューティングには不十分です。 Powershellはクラスの作成をサポートしていますが、古典的な "public static void main"のようなメソッドは必要ありません。そのため、エラーはElasticクラスの観点から処理する必要があります。 – Talat

関連する問題