【问题标题】:Using pipeline object to populate mail -to and -attachment使用管道对象填充 mail -to 和 -attachment
【发布时间】:2019-05-22 07:05:58
【问题描述】:

有史以来第一个 Powershell 脚本,因此感谢您提供任何建议或建议。我正在将 .csv 解析为更小的 .csv,以便将有关服务器的信息发送给收件人,但我在 foreach 中遇到了问题。我如何让它发挥作用?

一个有趣的事情是,在 Send-MailMessage 中,-to 不应该接受管道对象,它仍然会抛出错误,但它仍然会发送电子邮件。但是附件永远不会发送。

    #had to set this as a variable because @ was throwing splatting errors
    $Mail = "@Email.com"

    #Import csv and split information, exports UID.csv
    Import-csv C:\path\info.csv | Group-Object UID |    
      ForEach-Object {
        $_.Group | Export-csv "C:\path\$($_.Name).csv" -NoTypeInformation
      }

    #Import file again to get unique list of UID and send mail with 
    #respective UID.csv

    Import-csv C:\path\info.csv | Group-Object UID |    
      ForEach-Object {
        $_.UID | Send-MailMessage -From "<Me@email.com>" -To "<$($_.Name)$Mail>" `
          -Attachments "C:\path\$($_.Name).csv" `
          -Subject "Testing" -Body "Please Ignore This" -Priority High `
          -SmtpServer smtp.server.com   
      }

【问题讨论】:

  • 将复杂的 $Vars 分配给中间 $Vars 并在您的 Send-MailMessage 调用中使用这些中间 $Vars。 ///// 同样,反引号在一行的开头不起作用......仅作为一行末尾的最后一件事。 [grin] 他们逃脱了“换行符”...
  • 我已经清理了您问题中的语法错误和格式,因为我认为它们只是发布的产物,而不是您的实际问题。

标签: powershell csv foreach pipeline email-attachments


【解决方案1】:

Send-MailMessage 中,-to 不应接受管道对象

原则上确实如此,即如果管道对象具有.To 属性(您不是这种情况)。

但是,使用您当前的方法,您根本不需要管道输入,因为您将所有输入作为参数提供。

此外,您的管道输入不正确,因为$_.UID 通过管道发送$null,因为$_ - Group-Object 输出的组信息对象 - 没有.UID 属性。

使用delay-bind script blocks ({ ... }),您可以按如下方式简化您的命令,而无需调用ForEach-Object

Import-csv C:\path\info.csv | Group-Object UID |
  Send-MailMessage -From "<Me@email.com>" -To { "<$($_.Name)@Email.com>" } `
      -Attachments { "C:\path\$($_.Name).csv" } `
      -Subject "Testing" -Body "Please Ignore This" -Priority High `
      -SmtpServer smtp.server.com   

简而言之,传递给-ToAttachments 的脚本块会针对每个输入对象进行评估,它们的输出决定了每次迭代中的参数值。在脚本块中,$_ 像往常一样代表手头的管道对象。

请注意,此类延迟绑定脚本块只能与设计为接受管道输入的参数一起使用(无论是按值(整个对象)还是按特定属性的值)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    相关资源
    最近更新 更多