I have to tried to find the source code for Invoke-SqlCmd, but to no luck. My question is: Does Invoke-SqlCmd use sqlcmd.exe behind the scenes?
Additionally, are there any SQL Server commands available for PowerShell Core on Linux?
To install the SqlServer module on PowerShell Core in Linux simply install it.
Install-Module -Name SqlServer
More information: Manage SQL Server on Linux with PowerShell Core
Also: cmdlets currently available in PowerShell Core
As the cmdlets currently available in PowerShell Core also include Invoke-Sqlcmd and that they need to work cross-platform, this indicates that it does not use sqlcmd.exe behind the scenes. Additionally, the documentation for Invoke-Sql state:
Runs a script containing statements supported by the SQL Server SQLCMD utility.
So it "fakes" the syntax for backwards compatibility and to upgrade existing scripts. But there are a few specific commands that are not supported, which also is an indicator that it is not running sqlcmd.exe in the background.