2011-04-27 235 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