我对powershell很新,所以如果不清楚,请原谅我这样说的方式。
我有powershell命令,它将读取文本文件中的一行并通过电子邮件发送给收件人。 正如你在下面的代码中看到的那样,它正在寻找一个具有“ama”的文件 - 它做得很好。
但是,有时目录中有多个文件,文件名中包含“ama”。我希望它为每个名称中包含“ama”的文件发送电子邮件。每个文件的单独电子邮件,或者在目录中所有“ama”文件中读取相同行的摘要。
可以这样做吗?
非常感谢。
$a=Get-Content -Path "S:\Vecta\Test\*ama.*" | select -first 1 -skip 9
$a = $a.substring(3,16)
$b = "Imported"
$msg.Body=$a
#$msg.Body=Get-Content -Path "S:\Vecta\Test\*ama.*" | select -first 1 -skip 9 | Out-String
#Message Subject
$msg.Subject=$b
$smtp.Send($msg)
#$attachment.Dispose();
$msg.Dispose();
答案 0 :(得分:0)
编辑:
设定:
PS S:\vecta\test> "testa" >aama.txt
PS S:\vecta\test> "testb" >bama.log
PS S:\vecta\test> "testc" >cama.csv
PS S:\vecta\test> ls
Directory: S:\vecta\test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 08.03.2016 19:11 16 aama.txt
-a---- 08.03.2016 19:11 16 bama.log
-a---- 08.03.2016 19:11 16 cama.csv
PS S:\vecta\test> $files = Get-ChildItem -Path "S:\Vecta\Test\*ama.*"
PS S:\vecta\test> $files.count
3
PS S:\vecta\test> foreach($file in $files){$a = get-content $file; "$file=$a"}
S:\Vecta\Test\aama.txt=testa
S:\Vecta\Test\bama.log=testb
S:\Vecta\Test\cama.csv=testc
正如您所看到的,代码可以正常运行。
只需循环浏览文件:
$files = Get-ChildItem -Path "S:\Vecta\Test\*ama.*"
foreach($file in $files)
{
$a = Get-Content $file | select -first 1 -skip 9
# your email logic
}