2016-03-08 2 views
0

Я очень новичок в 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

Edit:

Установка:

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 

} 
+0

Спасибо, я попытался это, но получаю ошибку follwing: Get-Content: Невозможно привязать аргумент параметра «Путь», потому что она равна нулю. В C: \ Scripts \ AmaEmail.ps1: 27 char: 21 + $ a = Get-Content <<<< $ file | select -first 1 -skip 9 + CategoryInfo: InvalidData: (:) [Get-Content], ParameterBindingValidationException + FullyQualifiedErrorId: ParameterArgumentValidationErrorNullNotAllowed, Microsoft.PowerShell.Commands.GetContentCommand – JMar

+0

Работает, см. мой пример. Вы, должно быть, сделали что-то не так. – megamorf

+0

Не уверен, почему вчера это не сработало, но сейчас я делаю именно то, что хочу. Благодаря! – JMar

Смежные вопросы