编译为EXE的PS1无法识别传递的参数

时间:2014-04-03 16:00:48

标签: powershell-v2.0

Powershell新手在这里。

使用PowerGUi脚本编辑器,我将PS1编译为EXE。当我运行EXE时,它看不到传递的参数。我在PowerGUI脚本编辑器中从PowerShell控制台运行它们。

以下是程序代码。

param([string]$foo , [string]$bar , [string]$who)
Write-Host "Arg0: $foo"
Write-Host "Arg1: $bar"
Write-Host "Arg2: $who"

以下是测试结果 - 呼叫EXE -

PS C:\test> .\blat2.exe it bugs me
Arg0: 
Arg1: 
Arg2:

- 致电PS1 -

PS C:\test> .\blat2.ps1 it bugs me
Arg0: it
Arg1: bugs
Arg2: me

问题的另一个转折点:

另一个事实是我无法更改调用Blat2.exe的程序或它如何将参数传递给blat2.exe。

典型的命令行是

     blat2.exe -t something  anotherthing  

所以预期的参数是

-t
something 
anotherthing

我的问题是,如果PS1运行,我可以让$ args出现,但是在编译之后它们会退出。这就像编译阻止程序接受参数一样。

作为一个新手,我很确定我会犯一个菜鸟错误。

为什么EXE版本无法识别传入参数?

3 个答案:

答案 0 :(得分:0)

你看过事件查看器了吗?您是否尝试过运行可执行文件的完整路径? C:\ path \ to \ executable.exe arg1 arg2 arg3

答案 1 :(得分:0)

请查看最后发布的内容,以获得对我有用的解决方案的完整说明。

简而言之:

$ownarg = [Environment]::GetCommandLineArgs()

& cmd.exe /C "C:\TEST\Blat2.exe" $ownarg[1..$ownarg.Count] 

答案 2 :(得分:0)

我使用this实用程序

创建了一个exe

调用:test.exe param1 param2 param3

输出 Arg0: param1 Arg1: param2 Arg2: param3

致电:PS C:\。\ test.exe它让我烦恼

输出 Arg0: it Arg1: bugs Arg2: me