如何从 PowerShell 运行 *.exe 文件

Posted

技术标签:

【中文标题】如何从 PowerShell 运行 *.exe 文件【英文标题】:How do I run a *.exe file from PowerShell 【发布时间】:2017-10-15 20:41:38 【问题描述】:

我在 C:\Folder 有一个文件夹,其中包含文件 input.xml、output.xml 和 licensegenerator.exe。 Licensegenerator.exe 接受我们放入 input.xml 的变量,并使用 output.xml 文件为我们的一个程序创建一个临时许可证。我们通常通过命令行导航到 C:\Folder 目录,然后运行命令:

LicenseGenerator.exe "C:\Folder\input.xml" "C:\Folder\output.xml"

我正在尝试编写一个脚本以在 PowerShell 中执行完全相同的操作,但我正在苦苦挣扎……这就是我所拥有的:

$inputtest = "C:\Folder\Input.xml"
$outputtest = "C:\Folder\Output.xml"
$licensegen = "C:\Folder\LicenseGenerator.exe"

Invoke-Command $licensegen "$inputtest" "$outputtest"

当我运行它时,我得到了错误:

Invoke-Command:找不到接受参数的位置参数 'C:\文件夹\Output.xml'。 在行:5 字符:1 + 调用命令 $licngegen "$inputtest" "$outputtest" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ + CategoryInfo : InvalidArgument: (:) [Invoke-Command], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeCommandCommand

我也尝试过使用Invoke-Expression 运行,但得到完全相同的错误(除了它在开头显示“Invoke-Expression”)。有人知道我在这里做错了什么吗?

【问题讨论】:

& $licensegen "$inputtest" "$outputtest" 成功了。谢谢大家! 这里已经详细讨论过这个问题,并且有一些非常好的和不寻常的答案:***.com/questions/1673967/… 【参考方案1】:

您正在寻找call operator:

& $licensegen "$inputtest" "$outputtest"

Invoke-Command 主要用于在其他主机和/或其他用户上下文中运行脚本块。

【讨论】:

【参考方案2】:

Start-Process 很棒,因为您可以运行、重定向输出、隐藏子进程窗口等等。

Start-Process -FilePath $licensegen -Argumentlist $inputtest,$outputtest

【讨论】:

【参考方案3】:

& "[路径] 命令" [参数]

只需将 Invoke-Command 替换为 &

【讨论】:

以上是关于如何从 PowerShell 运行 *.exe 文件的主要内容,如果未能解决你的问题,请参考以下文章

从PowerShell设置Visual Studio环境变量

如何使用 powershell 运行安装程序?

如何在powershell 运行bat

如何让 Powershell 运行批处理文件然后保持打开状态?

Wix - 如何从安装目录安装后运行exe文件?

powershell远程下载exe并执行