这就是我想要执行的:
c:\Program Files (x86)\SEQUEL ViewPoint\viewpoint.exe /Setvar((POSTSTR $POSTSTR)(POSTEND $POSTEND)) /G:C:\viewpointfile.vpt /D:C:($BEGDATE 到 $TODDATE) .xls
这是我尝试过的:
$a = "/Setvar((POSTSTR $POSTSTR)(POSTEND $POSTEND))"
$b = "/G:C:\viewpointfile.vpt"
$c = "/D:C:($BEGDATE 到 $TODDATE).xls"
$Viewpoint = "c:\Program Files (x86)\SEQUEL ViewPoint\viewpoint.exe"
&$观点$a $b $c
当我执行此操作时,我收到一条错误消息:
文件 C:\viewpointfile.vpt "/D:C:($BEGDATE 到 $TODDATE).xls" 未找到!
我不确定它从哪里获得额外的报价。如果我只使用 $a 和 $b 运行命令,它运行得很好。
任何帮助将不胜感激。谢谢!:)
更新
manojlds 建议使用echoargs,所以这里是它的输出:
&./echoargs.exe $viewpoint $a $b $c
Arg 0 是 C:\Program Files (x86)\SEQUEL ViewPoint\viewpoint.exe
参数 1 是 /Setvar((POSTSTR 20101123)(POSTEND 20111123))
参数 2 是 /G:C:\viewpointfile.vpt
Arg 3 为 /D:C:(2010-11-23 至 2011-11-23 PM).xls
看来所有的论点都得到了正确的传递。当我在 cmd.exe 中将其作为命令运行时,它执行得很好。所以 Powershell 端的某些东西一定会弄乱输出。
还有其他方法可以使用 Powershell 执行此命令吗?
如果我无法运行这样的命令,它通常适用于 Invoke-Expression。但无法测试你的。
Invoke-Expression "$viewpoint $a $b $c"
Run Code Online (Sandbox Code Playgroud)
我发现 Joel Bennett 博客中的方法在调用旧命令时是最可靠的
http://huddledmasses.org/the-problem-with-calling-legacy-or-native-apps-from-powershell/
从 Powershell 调用 LogParser 时我必须使用它:
set-alias logparser "C:\Program Files (x86)\Log Parser 2.2\LogParser.exe"
start-process -NoNewWindow -FilePath logparser -ArgumentList @"
"SELECT * INTO diskspaceLP FROM C:\Users\Public\diskspace.csv" -i:CSV -o:SQL -server:"Win7boot\sql1" -database:hsg -driver:"SQL Server" -createTable:ON
"@
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10077 次 |
| 最近记录: |