我一直在尝试开发一个函数来处理复杂流程的所有SQLCMD需求。这包括混合连接模式(可信或用户名/密码(、不同的数据库、语句执行或脚本文件执行、捕获变量或文件的输出以进行解析、大量变量通过并生成文件的动态SQL(使用选择和打印语句以及非常宽的输出(。我已经尝试并放弃了ADO.NET,并且一直在InvokeSQLCMD和StartProcess-FilePath之间进行测试。。。\SQLCmd.exe…
我发现了一个对SQLCMD的引用,并将其复制/粘贴到powershell中,对其进行了修改,它成功了!
$result = sqlcmd -U uuuuu -P pppppp -i "D:temptestscript.sql" -v time="'time'" -S $server -d Master -w 3000
但它是什么?当我得到帮助SQLCMD时,它只列出调用SQLCMD和我的函数。当我得到别名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 FilesMicrosoft SQL Server
在CommandType
下,我们可以看到它确实解析为本机可执行的应用程序,这是PowerShell中的有效命令类型(与ping.exe
、cmd.exe
甚至powershell.exe
相同(。