我有一个包含每周报告的文件夹。每个报告在名称示例“ report-A_2_05_19.pdf”,“ report-B_2_05_19.pdf”等中都有创建日期。我想为其创建变量,但是由于日期会每周更改报告的名称我正在尝试这样做:
$rA = "c:\reports\report-A*.pdf"
$rb = "C:\reports\report-B*.pdf
执行此操作并尝试使用通配符打开报告时,它只会打印到屏幕上:
c:\ reports \ report-A * .pdf
$pw = Get-Content C:\MailPW.txt | ConvertTo-SecureString
$cred = New-Object System.Management.Automation.PSCredential name@domain.com, $pw
Send-MailMessage -To name@domain.com -from name@domain.com -Subject "Attachments" -Body "Attachments." -attachments $rA, $rB -Smtpserver mail.domain.com -UseSsl -credential $cred
答案 0 :(得分:1)
如果查看Send-MailMessage
的文档,您会发现-Attachments
不不支持通配符
类型:字符串[]
别名:PsPath
位置:已命名
默认值:无
接受管道输入:True(ByValue)
接受通配符:错误
因此,您可以做的是合并Resolve-Path
,它从通配符字符串推断出路径。
Send-MailMessage .... -attachments (Resolve-Path $rA, $rB).Path
请注意,这可能比您预期的要匹配。在附加文件之前,您可能需要验证结果。
当提供大量参数和值时,我也建议使用splatting。
$sendMailMessageParameters = @{
To = "name@domain.com"
from = "name@domain.com"
Subject = "Attachments"
Body = "Attachments."
attachments = (Resolve-Path $rA, $rB).Path
Smtpserver = "mail.domain.com "
UseSsl = $true
credential = $cred
}
Send-MailMessage @sendMailMessageParameters