我有一些变数:
$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
)。
答案 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