如何使用PowerShell中的参数运行批处理命令

时间:2017-10-06 20:00:55

标签: powershell elasticsearch

我正在编写一个PowerShell脚本,该脚本将按需运行enter image description here工具。

这是我的代码: ES.Config.xml - 这是一个xml文件,用于存储我想从PowerShell运行的诊断命令。它存储为一个字符串(参见DEV.Diagnostic.ExecuteCommand:

digraph name {
    rankdir="LR";
    node [shape="record"];

    B [label="FIFO|<r_in>r_in|<o>o"];
    A [label="FWD|<i>i|<r_in>r_in|<r_out>r_out|<o>o"];
    C [label="Cons|<i>i|<r_out>r_out|<o>o"];
    1 [label="OUTPUT"];

    A:o:e -> C:i:w;
    C:r_out:w -> A:r_in:e;
    B:o:e -> A:i:w;
    C:o:e -> 1:w;
    A:r_out:w -> B:r_in:e;
}

在我的powershell脚本中,我尝试将命令运行为:

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

$ global:DiagnosticCommand是一个全局变量,用于存储值&#34; C:\ ElasticSearch \ support-diagnostics-5.12 \ diagnostics.bat --host localhost --port 9200 --user elastic -p&#34;

运行此命令时总是出错。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

我无法确定您使用此内容的上下文,或许下面的示例会有所帮助。我见过两个可以帮助你的关键命令行。我提供了一个不需要显式路径的示例,尽管您可以使用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