我正在尝试将Powershell ISE用作控制台应用,但收效甚微。 Comskip是一个命令行工具,我有一个AHK脚本,通常通过cmd.exe
执行Comskip商业步调。工作正常,但最近我开始在文件名中使用Unicode字符(星级),因为你们都知道这些在控制台中不会显示得特别好。
调查让我想到支持Unicode的Powershell ISE。从ISE运行Comskip被证明是非常具有挑战性的。如果手动输入所有内容,它可以正常工作,但是当从另一个脚本调用它时问题就开始了。
现在有问题的部分是如果使用调用普通Powershell控制台的代码,那一切都很顺利。但调用ISE的相同代码失败了,我看不出原因。可以吗?我得到的错误消息没有给出任何错误的明确线索。错误消息只说:
用法:
powershell_ise.exe
或powershell_ise.exe fileName.ps1
呼叫ISE的AHK线看起来像这样:
latest_file := "C:\Program\Comskip\q.ts"
Run, PowerShell_ISE.exe "C:\Program\Comskip\comskip.exe" -t --videoredo "%latest_file%"
现在,如果使用Powershell控制台,相同的代码执行正常:
latest_file := "C:\Program\Comskip\q.ts"
Run, PowerShell.exe "C:\Program\Comskip\comskip.exe" -t --videoredo "%latest_file%"
为什么我会得到这些异常?
答案 0 :(得分:1)
PowerShell ISE无法运行powershell.exe所具有的命令。原因很简单:ISE被设计为一个交互式环境,其中powershell.exe被认为是交互式和“批量”操作的东西,就像你试图完成的那样。
您得到的错误是IMO描述性足够:您只能运行PowerShell_ISE(无参数)或指定ISE将在启动后打开的.ps1文件。在v3中有2个新添加(-NoProfile和-MTA)但仍然没有人将它设计为批处理工具..抱歉。