如何从 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环境变量