Powershell - 捕获EXE输出

时间:2014-03-09 17:03:11

标签: powershell logging exe file-io

我写了一个脚本来在powershell中运行Reflect磁盘映像备份。调用命令运行Reflect I use:

& "C:\folders\reflect.exe" -e -w -diff "C:\folders\backup.xml" | Out-Null

这会调用reflect.exe并在没有输出到控制台的情况下触发备份。但是,如果没有Out-Null,则在备份运行时将输出文本反映到控制台。关于它的作用等信息。当我将命令更改为:

& "C:\folders\reflect.exe" -e -w -diff "C:\folders\backup.xml" | Out-File "C:\logfile.log" -append

捕获此输出,日志文件中没有任何内容。我猜这是因为反射输出到cmd提示符。我怎样才能获得这些数据?我也尝试了神奇的'2>& 1'字符串并反映它作为一个参数。

谢谢!

编辑:

这是我的确切代码:

$loc_reflect = "C:\Program Files\Macrium\Reflect\reflect.exe" # Reflect location
$bak_type = $t # backup type from params 'full' or 'diff'
$dir_scripts = "C:\util\Backups\" # Scripts Dir
$fld_bin = "Bin\" # Path to Bin in scripts dir
$bak_src_norm = "M6600_all.xml" # Backup xml for normal in bin
$bak_args = @('-e', '-w') # array of arguments used in the backup command
[Array]$rargs = $bak_args + @("-$bak_type", "$dir_scripts$fld_bin$bak_src_norm")
& $loc_reflect $rargs | Out-Null

& $loc_reflect $rargs 2>&1 | Out-File "C:\logfile.log" -append

谢谢你们!

1 个答案:

答案 0 :(得分:0)

尝试以下方法......

& $loc_reflect $rargs >> "C:\logfile.log" 2>&1

这是基于对PowerShell输出重定向的一些快速研究。尽管如Macrium支持论坛上所述,反射可能会有些尴尬...

http://support.macrium.com/topic.asp?TOPIC_ID=624