В продолжение записи о 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
}
}Понравилось? =) Поделись с друзьями: