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版本无法识别传入参数?
答案 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