我正在寻找如何从文件夹中附加随机文件。 我尝试过
$files =(Get-ChildItem “C:\Users\adm\script\signature\”)
Foreach($file in $files) {
$signature =Get-ChildItem "C:\Users\adm\script\signature\$file"
}
Send-MailMessage -From "administrator@corp.internal" -to "administrator@corp.internal" -Subject "mot de passe compte windows" -Attachments $signature -body "$bodysignature" -BodyAshtm -SmtpServer "smtp.test"
,但邮件消息仅附加1个文件。 您知道如何解决该问题,为什么每个解决方案只能执行一次?
谢谢
答案 0 :(得分:2)
foreach中的每次迭代都会替换您的变量$signature
,而不是附加到(+=
)上。
为了获得更好的概述,我建议使用splatting。
$Attachments = (Get-ChildItem "C:\Users\adm\script\signature\").FullName
$param = @{
From = "administrator@corp.internal"
To = "administrator@corp.internal"
Subject = "mot de passe compte windows"
Attachments = $Attachments
Body = "$bodysignature"
BodyAshtm = $True
SmtpServer = "smtp.test"
}
Send-MailMessage @param
答案 1 :(得分:0)
您的搜索不是递归的。
尝试:
Get-ChildItem “C:\Users\adm\script\signature\” -Recurse
根据您使用的PowerShell版本(通过$PSVersionTable
转储)Get-ChildItem
还有一个附加的-File
参数,仅用于返回文件,而不用于文件夹。
因此在PowerShell版本5上,您可以使用
Get-ChildItem “C:\Users\adm\script\signature\” -Recurse -File
在旧版本中,您必须使用
Get-ChildItem “C:\Users\adm\script\signature\” -Recurse | where { ! $_.PSIsContainer }
希望有帮助