В продолжение записи о PowerShell, решил не жадничать, и публиковать свои скрипты. Вдруг кому-то пригодятся? Сразу хочу предупредить, я не профи, код вряд-ли выглядит красиво и правильно, но суть в том, что скрипты свою работу выполняют.
Ниже-указанный скрипт публикует запись на блог, с помощью smtp, то есть используя почту.
Сама суть следующая: есть текстовый файл в котором в каждой строке храниться ссылка на изображение. В taskscheduler создается задание, которое периодично (у меня раз в час) запускает скрипт. Сам же скрипт смотрит который сейчас час, и если время публикации наступило, значит нужно взять ссылку с текстового файла, отправить запись с изображением на блог и удалить эту ссылку из текстового файла.
#Автор скрипта: https://elims.org.ua Function Get-Image{ begin{[void][System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") |Out-Null} process{ $fi=[System.IO.FileInfo]$_ if( $fi.Exists){ $img = [System.Drawing.Image]::FromFile($_) $img.Clone() $img.Dispose() }else{Write-Host "File not found: $_" -fore yellow } } end{} } #условие с помощью которого указывается в которые часы добавлять картинку на блог if(((Get-Date).Hour -eq 0) -or ((Get-Date).Hour -eq 2) -or ((Get-Date).Hour -eq 4) -or ((Get-Date).Hour -eq 6) -or ((Get-Date).Hour -eq 8) -or ((Get-Date).Hour -eq 10) -or ((Get-Date).Hour -eq 12) -or ((Get-Date).Hour -eq 14) -or ((Get-Date).Hour -eq 16) -or ((Get-Date).Hour -eq 19) -or ((Get-Date).Hour -eq 20) -or ((Get-Date).Hour -eq 22)) { #читаем содержимое файла в масив построчно и берем из первой строки url добавляемого изображения $file = Get-Content "Путь_к_файлу_со_списком_ссылок_на_изображения.txt" $url = $file[0] #Скачиваем добавляемое изображение $webclient = New-Object System.Net.WebClient $file_temp = "D:\ImageSize.jpg" $webclient.DownloadFile($url,$file_temp) #Получаем ширину и высоту изображения $image = $file_temp | Get-Image $Width = $image.Width $Height = $image.Height if ($Width -gt $Height) { $width_or_height = "width" } else { $width_or_height = "height" } $l = Get-Item "Путь_к_файлу_со_списком_ссылок_на_изображения.txt" #если размер файла = 0 байт - отправляем на почту оповещение о пустой очереди, в ином случае отправляем изображение из очереди на блог if ($l.Length -eq 0) { #пароль и юзернейм от почты $secpasswd = ConvertTo-SecureString "ваш_пароль_от_почты" -AsPlainText -Force #пароль от почты $mycreds = New-Object System.Management.Automation.PSCredential ("логин_почты", $secpasswd) #логин от почты #отправка письма о том что файл с ссылками пустой send-mailmessage -to "на_какую_почту_слать" -from "логин_почты@yandex.ru" -subject "Очередь пуста!" -body "Очередь пуста!" -smtpserver smtp.yandex.ru -credential $mycreds } else { #Отправляем запись в блоги через smtp $secpasswd = ConvertTo-SecureString "Пароль_от_почты" -AsPlainText -Force #пароль от почты $mycreds = New-Object System.Management.Automation.PSCredential ("логин_от_почты", $secpasswd) #логин от почты send-mailmessage -to "секретный_ящик@blogger.com" -from "логин_от_почты@yandex.ru" -Encoding ([System.Text.Encoding]::UTF8) -subject " " -bodyasHTML -body "<center><img src=`"$url`" $width_or_height=`"100%`" /></center>" -smtpserver smtp.yandex.ru -credential $mycreds #Записываем в логфайл время и ссылку добавленного изображения $file_log = "Путь_к_логфайлу.txt" $time = "{0:yyyy-MM-dd HH:mm:ss}" -f (get-date) $string = "$time $url" $string | Out-File -Append $file_log -Encoding UTF8 #Удаляем отправленную картинку из очереди $file = "Путь_к_файлу_со_списком_ссылок_на_изображения.txt" $file_temp = "D:\Temp.txt" get-content $file | select -Skip 1 | set-content $file-temp move $file-temp $file -Force } }
Понравилось? =) Поделись с друзьями: