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"
以下是测试结果--调用执行--
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 版本无法识别传入的参数?
你在事件查看器中看过吗?您是否尝试过运行可执行文件的完整路径?C:\path\to\executable.exe arg1 arg2 arg3
请参阅最后的帖子,了解对我有用的解决方案的完整解释。
简而言之:
$ownarg = [Environment]::GetCommandLineArgs()
& cmd.exe /C "C:TESTBlat2.exe" $ownarg[1..$ownarg.Count]
我用这个实用程序做了一个exe
调用: 测试.exe 参数1 参数2 参数3
输出
Arg0: param1
Arg1: param2
Arg2: param3
呼叫: PS C:\ .\测试.exe它让我烦恼
输出
Arg0: it
Arg1: bugs
Arg2: me