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
会是)。
我一直在尝试开发一个函数来处理复杂过程的所有 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
会是)。