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

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


No comments yet... Be the first to leave a reply!