无法 运行 在 PS1 文件中调用-Sqlcmd,但可以在控制台上调用

Cannot run Invoke-Sqlcmd in a PS1 file but can on the console

我目前在一台装有 SQL 服务器 2008 的机器上,根据这个问题 (How to execute .sql file using powershell?),我安装了 powershell 管理单元以与 SQL 服务器交互。

问题是现在我已经安装了它,我可以运行像这样从命令行调用-Sqlcmd。

Invoke-Sqlcmd -inputfile "myTestFile.sql" -serverinstance '.\sql2008';

但如果我将那行放在 PS1 文件中 运行 并尝试 运行 就这样

powershell ./runSQLscript.ps1

我收到这个错误

The term 'Invoke-Sqlcmd' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At D:\TEMP\powershellTests\runSQLscript.ps1:1 char:14 + Invoke-Sqlcmd <<<< -inputfile "myTestFile.sql" -serverinstance '.\sql2008'; + CategoryInfo : ObjectNotFound: (Invoke-Sqlcmd:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException

在您的 PS1 中,您需要 Add-PSSnapin 并加载 SQL 管理单元。

每个 Powershell window 都是一个新环境,其中的模块和管理单元尚未加载。