Powershell 对于邮件中的每个文件,您可以修复吗?
我正在寻找如何附加一个文件夹中的随机文件。 我试过这个Powershell 对于邮件中的每个文件,您可以修复吗?,powershell,Powershell,我正在寻找如何附加一个文件夹中的随机文件。 我试过这个 $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 "admini
$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个文件附加到邮件消息。
您知道如何解决这个问题吗?为什么for-each只执行一次
谢谢您的搜索不是递归的 尝试: 根据您使用的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 }
希望这对您的变量
$signature
在foreach中的每次迭代中都会被替换,而不是附加到(+=
)中有所帮助。为了获得更好的概述,我建议使用
谢谢你的帮助。如果我理解-recurse=此文件夹中的平均文件夹。希望您有其他想法,我也尝试了$signature+=但不适用于此。我的PSVersion 5.0.10586.117i将阅读你的链接,但如果你能解释一下你的代码,因为我不知道这种方式,我知道我的代码中的所有变量,所以我最好理解一下,我相信邮件将通过这个@param发送,但对我来说太奇怪了,因为我们通常使用$。也许你使用@becausepowershell会一直这样吗?你的代码是如何工作的,因为对于我的knowdelege来说,如果我看到这个代码,我相信在全名之后脚本会附加一个文件,然后继续?非常感谢,非常好。附加了一个链接,说明所有参数都被填充到哈希表中并传递给cmdlet。
附件
参数需要文件路径。将gci括在括号中并用.FullName
作为后缀相当于Get ChildItem X:\path | Select Object-ExpandProperty FullName
,但短得多您的代码非常好,但是当我尝试从另一个路径添加文件时,我出现了一个错误,因为我不知道如何修复它。尝试后,我发现了如何做到这一点$附件+=(获取ChildItem“C:\Users\adm\script\picture\”)。全名+工作正常,希望这是一个好代码?当然,如果它适合您的话<代码>+=附加到字符串/集合响应。添加到数字。请不要将标签编辑到问题的主题中。接受答案就足以将问题标记为已解决。
Get-ChildItem “C:\Users\adm\script\signature\” -Recurse | where { ! $_.PSIsContainer }
$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