SQLCMD不能将“ tee”识别为内部或外部命令

时间:2019-06-20 11:30:29

标签: sql powershell batch-file sqlcmd

我有fetchDb.bat文件,该文件将许多.sql文件调用到 将数据库升级到最新版本

这是用于执行.Sql文件内容的命令

sqlcmd %Sqlinstance% -d DataBase -i "fileName.sql" | tee "FileNameOutput.txt"

但是此消息始终为我出现 不能将“ tee”识别为内部或外部命令,可操作程序或批处理文件。

2 个答案:

答案 0 :(得分:1)

tee ( Tee-Object ) powershell 支持的cmdlet。因此,您必须为此使用,或者可以使用以下命令在bat中将输出保存到文件

 COMMAND >> Filename

根据您的情况:

sqlcmd %Sqlinstance% -d DataBase -i "fileName.sql" >> "FileNameOutput.txt"

答案 1 :(得分:0)

在CMD Shell中,您可以执行以下任一操作,但请确保批处理文件仅回显您要在输出文件中看到的内容。这将使您可以使用tee

使用批处理文件:

PowerShell.exe -Command ".\fetchDB.bat | tee 'filenameoutput.txt'"

使用可传递给PowerShell的命令:

PowerShell.exe -Command "$sqlinstance='servername'; sqlcmd.exe -S $sqlinstance -d Test -i 'fileName.sql' | tee 'filenameoutput.txt'"

# You can use this option if your CMD shell has variable sqlinstance defined
powershell.exe -Command "sqlcmd.exe -S %sqlinstance% -d Test -i 'fileName.sql' | tee 'filenameoutput.txt'"

在PowerShell控制台中,您可以仅调用完全合格的批处理文件并将其管道传输到tee

.\fetchdb.bat | tee "filenameoutput.txt"