用空格和变量执行exe文件

时间:2015-06-04 20:31:33

标签: powershell

我有一些变数:

$FSDUMP_DIR = 'C:\DUMPDIR\'
$ADS_DIR = 'C:\Program Files\Advantage 10.10\Server\'
$ADS_PASS = 'password'
$DATAADT_DIR = 'C:\SHARED\DATAADT\'
$LOGDIR = 'C:\DUMPDIR\BUDUMPRESULT\'
$LOGFILE = $LOGDIR + 'output.txt'
$ADSBACKUP = 'adsbackup.exe'

我想执行一个文件,从变量汇编参数并将输出转储到txt文件中。

我试过这个

$ASSEMBLEFilePath = $ADS_DIR + $ADSBACKUP
$ASSEMBLEArgumentlist = '-p' + $ADS_PASS + ' ' + $DATAADT_DIR + 'florisoft.add ' + $FSDUMP_DIR
$ASSEMBLECommand = $ASSEMBLEFilePath + ' ' + $ASSEMBLEArgumentlist
& $ASSEMBLECommand

但它会引发错误。所以我尝试了这个:

Invoke-Expression $ASSEMBLECommand

但是它会抛出相同的错误,所以我尝试了这个:

Start-Process -FilePath $ADSBACKUP -WorkingDirectory $ADS_DIR -ArgumentList $ASSEMBLEArgumentlist -Wait

这个可行,但我无法在文本文件中捕获输出(使用>> textfile.txt)。

1 个答案:

答案 0 :(得分:2)

对于使用调用运算符(&),程序和参数不应该是单个字符串,并且参数应该在数组中:

$FSDUMP_DIR  = 'C:\DUMPDIR'
$ADS_DIR     = 'C:\Program Files\Advantage 10.10\Server'
$ADS_PASS    = 'password'
$DATAADT_DIR = 'C:\SHARED\DATAADT'
$LOGDIR      = 'C:\DUMPDIR\BUDUMPRESULT'

$LOGFILE     = Join-Path $LOGDIR 'output.txt'
$ADSBACKUP   = Join-Path $ADS_DIR 'adsbackup.exe'

$params = '-p', $ADS_PASS, "${DATAADT_DIR}\florisoft.add", $FSDUMP_DIR

& $ADSBACKUP $params
相关问题