Войти

Показать полную графическую версию : Отправка сообщения с помощью PowerShell


Страниц : 1 [2]

almaz.husnullin
12-09-2014, 12:36
спасибо!

alexu.ku.3@fb
29-09-2014, 13:52
Сенк за тему, скопипастил чуть поправил, но теперь хочу после отправки вложений переместить их в другую папку.

Write-Verbose "Добавляем получателей"
$To | ForEach-Object {$Message.To.Add($_)}
Write-Verbose "Отправляем сообщение"
$smtpclient.Send($Message)
#$res
Start-Sleep -s 10
Get-ChildItem "d:\scripts\Send1\"|where { ! $_.PSIsContainer } |select -expand fullname | foreach-object {move-item $_ -destination "d:\scripts\Send1\old\"}


Move-Item : Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
строка:35 знак:116
+ Get-ChildItem "d:\scripts\Send1\"|where { ! $_.PSIsContainer } |select -expand fullname | foreach-object {move-item <<<< $_ -destination "d:\scripts\Send1\old\"}
+ CategoryInfo : WriteError: (D:\scripts\Send1\report_77843_20140926:FileInfo) [Move-Item], IOException
+ FullyQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand

Как только закрываю окно powershell.exe файлы можно перемещать, как ему сказать отпустить файлы ? что бы можно было их перенести в одном скрипте.

Kazun
29-09-2014, 14:52
Воспользоваться методом Dispose() для объекта класса Net.Mail.Attachment, а лучше использовать командлет Send-MailMessage.

alexu.ku.3@fb
29-09-2014, 16:29
А как его засунуть в цикл и в одно письмо вложить 10 файлов - вот так не работает %)

Dispose() так и не понял толком куда вставить, пробовал по разному на разные переменные - не работает.



$body = Get-ChildItem | Select -Exp FullName | Out-String
if($body)
{
send-mailmessage -to "User01 <admin@t.com.ua>" -from "User02 <it@a.ua>" -Attachment $body -subject "Test mail" -SmtpServer mx.a.ua -Body "test"

Kazun
29-09-2014, 16:52
1) Дохтур, у меня ЭТО! (с)

2) Изменить $body на :
$body = Get-ChildItem | Select -Exp FullName

alexu.ku.3@fb
30-09-2014, 13:13
Сенк, работает.
Но опять же с перемещением отправленных вложений возникает та-же проблема.

Move-Item : Процесс не может получить доступ к файлу, так как этот файл занят другим процессом

___

cd d:\scripts\Send1\
$body = Get-ChildItem | ?{ ! $_.PSIsContainer } | % { $_.FullName }
if($body)
{
send-mailmessage -to "User01 <a@p.com.ua>" -from "User02 <i@a.ua>" -Attachment $body -subject "Test mail" -SmtpServer m.a.ua -Body "test"
}
Start-Sleep -s 5

Get-ChildItem "d:\scripts\Send1\"|where { ! $_.PSIsContainer } |select -expand fullname | foreach-object {move-item $_ -destination "d:\scripts\Send1\old\"}




© OSzone.net 2001-2012