Powershell脚本以电子邮件中附加的表格格式通过Sql查询获取输出?

Powershell脚本以电子邮件中附加的表格格式通过Sql查询获取输出?,sql,powershell,Sql,Powershell,尝试发送邮件时,下面的脚本会导致下面的错误 新对象:找不到接受参数“=”的位置参数。 第22行字符:18 + ... onnection=新对象System.Data.SqlClient.SqlConnection$SqlCon。。。 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo:InvalidArgument::[New Object],参数BindingExc

尝试发送邮件时,下面的脚本会导致下面的错误

新对象:找不到接受参数“=”的位置参数。 第22行字符:18 + ... onnection=新对象System.Data.SqlClient.SqlConnection$SqlCon。。。 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo:InvalidArgument::[New Object],参数BindingException +FullyQualifiedErrorId:PositionParameterNotFound,Microsoft.PowerShell.Commands.NewObjectCommand

使用1个参数调用Fill时出现异常:用户登录失败。 第29行字符:1 +$SqlAdapter.Fill$DataSet + ~~~~~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo:NotSpecified::[],MethodInvocationException +FullyQualifiedErrorId:SqlException

发送邮件消息:无法将“System.Object[]”转换为参数“Body”所需的类型“System.String”。不支持指定的方法。 第44行字符:17 +-BodyAsHtml$html\U表格` + ~~~~~~~~~~~ +CategoryInfo:InvalidArgument::[Send MailMessage],参数BindingException +FullyQualifiedErrorId:CannotConvertArgument,Microsoft.PowerShell.Commands.SendMailMessage

$Servers=Import Csv-路径D:\Scripts\input.Csv.ComputerName $SQLDBName=ReportServer $SQLQuery=@ 选择不同的 罗莱曼, USR.UserName 从…起 目录C 内部连接策略 在C.PolicyID=PL.PolicyID上 内部联接策略用户角色 ON PUR.PolicyID=PL.PolicyID 内部连接用户USR ON PUR.UserID=USR.UserID 内部联接dbo.Roles RL 在RL.RoleID=PUR.RoleID上 其中RoleName=‘内容管理器’ 按USR.UserName订购 @ 此代码连接到SQL server并检索数据 $SQLConnection=newobjectsystem.Data.SqlClient.SQLConnection$SQLConnection.ConnectionString=Server=$Servers;数据库=$SQLDBName; $SqlCmd=New Object System.Data.SqlClient.SqlCommand $SqlCmd.CommandText=$SqlQuery $SqlCmd.Connection=$SqlConnection $SqlAdapter=新对象System.Data.SqlClient.SqlDataAdapter $SqlAdapter.SelectCommand=$SqlCmd $DataSet=新对象System.Data.DataSet $SqlAdapter.Fill$DataSet $SqlConnection.Close 此代码输出检索到的数据 $html=$DataSet.Tables[0]|转换为html-片段 $results=$DataSet.Tables | format table-autosize | out字符串 $mail\u body=$results 发送电子邮件 $html_table=$dt |排序对象状态|转换为html-片段 发送邮件` -来自报道。Services@accenture.com ` -再见。singh@accenture.com' ` -主题“发送附件”` -BodyAsHtml$html_表格` -SmtpServer'AMRINT.SMTP.ACCENTURE.COM'
这应该对你有用。您遇到的一个问题是,脚本中从未初始化变量$dt

param $emailFrom='报告。Services@accenture.com', $emailTo='aditi.m。singh@accenture.com', $emailSubject='发送附件', $smtp='AMRINT.smtp.ACCENTURE.COM', $Server=$Env:ComputerName\MSSQLSERVER01, $SQLDBName='Master', $SQLQuery=@ 选择不同的 罗莱曼, USR.UserName 从…起 目录C 内部连接策略 在C.PolicyID=PL.PolicyID上 内部联接策略用户角色 ON PUR.PolicyID=PL.PolicyID 内部连接用户USR ON PUR.UserID=USR.UserID 内部联接dbo.Roles RL 在RL.RoleID=PUR.RoleID上 其中RoleName=‘内容管理器’ 按USR.UserName订购 @ 此代码连接到SQL server并检索数据 $SQLConnection=新对象System.Data.SqlClient.SQLConnection $SqlConnection.ConnectionString=Server=$Server;数据库=$SQLDBName;综合安全=真实; $SqlCmd=New Object System.Data.SqlClient.SqlCommand $SqlCmd.CommandText=$SqlQuery $SqlCmd.Connection=$SqlConnection $SqlAdapter=新对象System.Data.SqlClient.SqlDataAdapter $SqlAdapter.SelectCommand=$SqlCmd $DataSet=新对象System.Data.DataSet $SqlAdapter.Fill$DataSet $SqlConnection.Close $data=$DataSet.Tables[0] $html=$data` |选择对象-属性RoleName,用户名` |转换为Html-片段` |外线 发送邮件` -从$emailFrom` -至$emailTo` -主题$emailSubject` -BodyAsHtml$html` -SmtpServer$smtp
我建议您在代码中添加更多格式。以$Servers=…开头的块,因此注释掉的部分导致了错误?@derekbaker783底部的电子邮件部分表示的是字符串
没有terminator@derekbaker783在$Servers下,我传递带有数据库服务器名称的输入csv文件,在$sqldbname下,我传递db名称,在$SQLQuery内,我传递sql查询。查看是否有帮助。这个答案的一个小问题是,对于给定的sql查询,$sqldbname应该是='ReportServer',而不是Master。