2013-01-15 85 views
0

我正在做一個沒有足夠時間重寫HTA中寫入內容的項目。 我需要使用cmd.exe/C調用HTA(因此它在制定後關閉窗口,生成閃爍的hta框)。我可以用invoke-expression的方式做到這一點,但我試圖把它作爲一個混合變量的開始工作。Powershell在後臺打開hta

$RunHTA = { 
param(
[string]$FP, ### filepath to hta 
[string]$output) ### output 
Invoke-Expression -command 'cmd.exe /C $FP /H:`"$output`"' ### this line works alone. the /H is the save report feature and the double quotes are needed by the hta 
} 

$fp="C:\Path\To\HTA\file.hta" 
$output = "C:\Output\path" 
$j = Start-job $RunHTA -ArgumentList $FP,$output 
$j | Receive-job 

The filename, directory name, or volume label syntax is incorrect. 
+ CategoryInfo   : NotSpecified: (The filename, d...x is incorrect.:String) [], RemoteException 
+ FullyQualifiedErrorId : NativeCommandError 

我已經做了一些測試,並且變量正確地通過了。使用返回來查看完整變量。

似乎很簡單,可能應該沒有麻煩的工作。

任何想法?

+0

解決方案: $ RunHTA = { PARAM( [字符串] $ FP,###文件路徑到HTA [字符串] $輸出)# ##輸出 Invoke-Expression -command「cmd.exe/C $ FP/H:''''''$ $ output'」'「'」「###這一行獨立工作。/H是保存報告功能和雙引號是需要的hta } [http://stackoverflow.com/questions/6714165/powershell-stripping-double-quotes-from-command-line-arguments] [1] [1]:http://stackoverflow.com/questions/6714165/powershell-stripping-double-quotes-from-command-line-arguments – user1981178

回答

0

在雙引號嘗試包裹命令代替

Invoke-Expression -command "cmd /c $FP /H:`"$output`"" 
+0

雙引號的問題在於我的轉義雙引號被刪除,這是HTA正常工作所需的。 – user1981178