【问题标题】:invoke-sqlcmd failing after Automated SQL install with powershell使用 powershell 自动安装 SQL 后,invoke-sqlcmd 失败
【发布时间】:2015-06-16 05:59:52
【问题描述】:

我正在使用 Powershell 4 安装 SQL 2014。一切正常,除了最后我有一个函数可以使用 invoke-sqlcmd 从 .sql 文件运行脚本。我收到以下错误:

“‘invoke-sqlcmd’一词未被识别为 cmdlet、函数、脚本文件的名称...”

如果我尝试导入我得到的 sqlps 模块:

没有加载指定的模块“sqlps”,因为在任何模块目录中都没有找到有效的模块文件。

但这是最重要的。如果我打开一个单独的 PowerShell 终端,它就可以在那里工作。 :/ 并在初始终端继续失败。

我试图理解为什么会这样,任何帮助都将不胜感激。我想避免编写一次重启脚本。

谢谢, 丹

【问题讨论】:

    标签: sql sql-server powershell smo sqlps


    【解决方案1】:

    现有的 Powershell 会话不知道刚刚安装的 Sql 模块。看看环境变量$env:PSModulePath。将新 shell 的变量与现有变量进行比较,您应该会看到一个缺失的路径,例如 ...\Microsoft SQL Server\110\Tools\PowerShell\Modules\

    要解决此问题,请修改路径以包含模块目录。像这样,

    $env:PSModulePath += ";c:\some\path\to\sql"
    

    【讨论】:

    • 天才!!谢谢。像魅力一样工作。 :) 虽然我希望有一种方法可以简单地刷新会话,因为我现在必须放置一些东西来找出模块所在的目录(例如 SQL 2014 在 120 中,而 2012 在 110 中)。跨度>
    • 啊哈...原来我需要添加的路径在环境变量中。我想这就是 $env 的含义(对 PowerShell 来说有点新),但正如您所说,自从安装 SQL Server 以来,它还没有在 PS 会话中更新。所以我不需要担心任何文件夹。我可以将会话环境变量更新为实际和当前的环境变量。找到这个:powershellmagazine.com/2013/06/06/…
    猜你喜欢
    • 2014-04-15
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 2018-03-07
    • 2017-09-30
    • 2016-01-15
    • 1970-01-01
    • 2018-07-15
    相关资源
    最近更新 更多