PowerShell 中的 SQLCMD 是什么?

What is SQLCMD in PowerShell?

我一直在尝试开发一个函数来处理复杂过程的所有 SQLCMD 要求。这包括混合连接模式(受信任或 username/password)、不同的数据库、语句执行或脚本文件执行、将输出捕获到变量或文件以进行解析、大量变量传递和生成动态 SQL到文件(同时使用 select 和 print 语句以及非常宽的输出)。我已经尝试并打折 ADO.NET 并且一直在 Invoke-SQLCMD 和 Start-Process -FilePath ...\SQLCmd.exe...

之间进行测试

我找到了对 SQLCMD 的引用,我 copied/pasted 将它输入到 powershell 中,对其进行了修改,它成功了!

$result = sqlcmd -U uuuuu -P pppppp -i "D:\temp\testscript.sql" -v time="'time'" -S $server -d Master -w 3000

但它是什么?当我执行 get-help SQLCMD 时,它只列出 Invoke-SQLCMD 和我的函数。当我执行 get-alias sqlcmd 时,它会抛出一个错误,因为它不存在。我有一个 $sqlcmd 变量,但我没有那样引用它。

顺便说一下,如果有人知道一个有用的 SQLCMD 函数来处理所有这些,很高兴看到。

如评论中所述,您要查找的命令是 Get-Command:

PS ~> Get-Command sqlcmd |Format-Table -AutoSize

CommandType Name       Version       Source
----------- ----       -------       ------
Application SQLCMD.EXE 15.0.1300.359 C:\Program Files\Microsoft SQL Server\

CommandType 下我们可以看到它确实解析为本机可执行文件 application,这是 PowerShell 中的有效命令类型(与 ping.exe , cmd.exe 甚至 powershell.exe 会是)。