2011-04-27 177 views
1

我有一个脚本,需要3个必需的输入参数,用于运行tdpsql的备份命令。从powershell运行tdpsql命令

  1. 类型(FULL,DIFF和LOG)
  2. SQLServerinstancename
  3. 数据库(SYSTEM,ALL)

在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命令行运行它的内容,但是当我尝试从Pow运行它时\ PROGRA〜1 \的Tivoli \ TSM \ TDPSql \ tdpsqlc.exe 备份主FULL /SQLSERVER = TCP:与它失败,出现以下

术语

C中的& ershell /SQLAUT H = INT /TSMOPTFile=C:\Progra~1\Tivoli\TSM\TDPSql\dsm.opt/EXCLUDEDB = tempdb的/ LOGFILE = <logfile>

没有被识别为一个012的名称cmdlet,函数,脚本文件或 可操作的程序。检查名称的 的拼写,或者如果包含路径,则验证路径是否正确,然后再次尝试 。在TDPSQLBackup.ps1:166 焦炭:6 + & < < < < $ CMD >>的test2.txt + CategoryInfo:ObjectNotFound: (C:\ PROGRA〜1 \蒂夫... forsqlimran.txt:字符串) [],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException

任何帮助将非常感激。

回答

1

你可以尝试的Invoke-Expression $cmd代替& $cmd.

0

是更好的使用Invoke-Expression,但如果你仍然想使用&你可以这样做。

$cmd = "C:\Windows\System32\notepad.exe" 
$params = "C:\temp\file.txt" 

& $cmd $params 

使用var作为程序文件和var参数。

0

而不是运行一个批处理命令的你最好尝试PowerShell命令如下

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