我有一个脚本需要3个必需的输入参数,这些参数将用于运行tdpsql的备份命令。
在powershell脚本中,我有以下一行
$cmd = "C:\Progra~1\Tivoli\TSM\TDPSql\tdpsqlc.exe backup " + $idatabase + " " + $action + " " + $parameter + " /LOGFILE=" + $logdir + $logfile + "" $tdpsqlexe - The tdpsqlc exe.
$idatabase - Database name
$action = FULL\DIFF\LOG
$parameter = /sqlserver=TCP:" + $sqlserverinstance + " /SQLAUTH=INT /TSMOPTFile='" + $dsmoptfilename + "' /EXCLUDEDB=" + $exclude
& $cmd
当我回显命令时,它会报告我使用powershell命令行运行它的内容,但当我尝试使用&运行时从Powershell运行它时。它失败了以下
术语
C:\ PROGRA〜1 \的Tivoli \ TSM \ TDPSql \ tdpsqlc.exe 备份大师FULL / SQLSERVER = TCP: / SQLAUT H = INT /TSMOPTFile=C:\Progra~1\Tivoli\TSM\TDPSql\dsm.opt / EXCLUDEDB = tempdb / LOGFILE =
<logfile>
未被识别为a的名称 cmdlet,函数,脚本文件或 可操作的程序。检查拼写 名称,或者如果包含路径, 验证路径是否正确 再试一次。在TDPSQLBackup.ps1:166 焦炭:6 +&amp; &LT;&LT;&LT;&LT; $ cmd&gt;&gt;的test2.txt + CategoryInfo:ObjectNotFound: (C:\ PROGRA〜1 \蒂夫... forsqlimran.txt:字符串) [],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException
任何帮助都将非常感激。
答案 0 :(得分:1)
您可以尝试使用Invoke-Expression $cmd
代替& $cmd.
答案 1 :(得分:0)
是的,最好使用Invoke-Expression
,但如果您仍想使用&amp;你可以这样做。
$cmd = "C:\Windows\System32\notepad.exe"
$params = "C:\temp\file.txt"
& $cmd $params
将var用于程序文件,使用var作为参数。
答案 2 :(得分:0)
不是运行批处理命令,而是按照以下方式更好地尝试Powershell cmdlet
import-module "C:\Program Files\Tivoli\Flashcopymanager\fmmodulemmc.dll"
import-module "C:\Program Files\Tivoli\Flashcopymanager\fmmoduleSQL.dll"
$startTime = get-date
Backup-DpSqlComponent -Name AdventureWorks2012 -BackupDestination TSM -BackupMethod Legacy -Full
$endTime = get-date
$activity = Get-FcmMmcActivity -StartTime $startTime -EndTime $endTime
$activity
参考链接 http://www-01.ibm.com/support/docview.wss?uid=swg21974345