【发布时间】:2022-03-09 02:02:03
【问题描述】:
我正在尝试创建一个 shell 脚本来运行查询并存储输出,到目前为止,我的脚本看起来像这样:
push-location;
import-module SqlPs;
Pop-Location;
$myData = invoke-sqlcmd -InputFile "C:\<path>\blah.sql" -serverinstance dbatest -database testdb;
$mydata | out-file C:\Users\<path>\shelloutput.csv;
remove-module sqlps;
它可以很好地加载 SqlP,我可以使用 Get-Module -ListAvailable 生成 this 进行检查
但是当我执行invoke-sqlcmd 时,无法识别:
关于我还能做什么的任何想法?
编辑 1
当我添加选项-Verbose 时,我看到这个错误 说有些文件已经存在。这个错误是否会阻止我加载模块?当我执行Get-Module 时,它没有列出 SQLPS 模块。
编辑 2
加载 32 位版本的错误更少,但加载文件时仍然出错...现在只丢失了 2 个文件,而不是之前的 5 个文件
【问题讨论】:
-
Get-Module -ListAvailable显示存在哪些模块,而不是加载了哪些模块。删除-ListAvailable以显示加载到当前会话中的内容。 -
@MikeShepard 进行了编辑以反映您的评论...我尝试使用
import-module sqlps -force但这没有帮助 -
PowerShell 和 SQL Server 之间是否存在平台不匹配?如果您正在运行 32 位 SQL 服务器,请尝试从
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe启动 32 位版本的 PowerShell,看看是否可以加载SQLPS。 -
@briantist 进行了反映您的评论的编辑,它所做的只是删除已经存在的文件数
标签: powershell