Invoke-Sqlcmd vs sqlcmd utility

Invoke-Sqlcmd can run many of the scripts which can be run with the sqlcmd utility. However, Invoke-Sqlcmd runs in the PowerShell environment which is different than the command prompt environment sqlcmd runs in. Invoke-Sqlcmd has been modified to work in a PowerShell environment.

Not all the sqlcmd commands can be used in Invoke-Sqlcmd. Commands which are not available include the below:

  • :connect
  • :error
  • :out
  • :ed
  • :lis
  • :listva
  • :reset
  • :perftrace
  • :serverlist
The Invoke-Sqlcmd cmdlet does not initialize the sqlcmd environment or scripting variables such as SQLCMDDBNAME or SQLCMDWORKSTATION, nor does it  display messages, such as the output of PRINT statements, unless the PowerShell -Verbose common parameter is specified. For example:
Invoke-Sqlcmd -Query "PRINT N'abc';" -Verbose

Not all  the sqlcmd parameters are required  in the PowerShell environment. For example,  PowerShell formats all output from cmdlets, so  sqlcmd parameters specifying formatting options are not implemented in Invoke-Sqlcmd. 


Leave a comment

Your email address will not be published.