Tag «Powershell»

Wysyłka email z Powershell

Aby wysłać wiadomość email z poziomu powershell wydajemy polecenie Send-MailMessage -From [email protected] -To [email protected] -Subject „Temat wiadomości” -Body „Zawartość wiadomości” -SmtpServer smtp.domena.pl -Port 587 Powyższe polecenie wysyła wiadomość bez autoryzacji. W przypadku gdy serwer za pośrednictwem którego chcemy wysłać wiadomość wymaga autoryzacji musimy przekazać dane autoryzacyjne. W pierwszej kolejności zapiszemy dane do zmiennej $cred = get-credential Po wydaniu powyższego polecenia pokaże nam się okno w którym wprowadzamy dane autoryzacyjne Następnie wysyłamy wiadomość wydając polecenie Send-MailMessage -From [email protected] -To [email protected] -Subject „Temat wiadomości” -Body „Zawartość wiadomości” -Credential $cred -SmtpServer smtp.domena.pl -Port 587 Rozwiązanie to jednak nie nadaje się do wykorzystania w automatycznych skryptach. Hasło musimy automatycznie w jakiś sposób przekazać. W tym celu możemy zapisać zakodowane hasło do pliku wydając polecenie „haslo_do_konta” | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File „c:\password.txt” Hasło zapisane w powyższy sposób możemy następnie wykorzystać w skrypcie w następujący sposób #zapis nazwy użytkownika do zmiennej$User = „login”#zapisanie w zmiennej scieżki do pliku z zakodowanym hasłem$File = „C:\password.txt”#zapisanie danych logowania do zmiennej$cred=New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, (Get-Content $File | ConvertTo-SecureString)#wysyłka wiadomościSend-MailMessage -From [email protected] -To [email protected] -Subject „Temat wiadomości” -Body „Zawartość wiadomośc” -Credential $cred -SmtpServer smtp.domena.pl -Port 587

Wykrywanie błędów w logach

W przypadku gdy program nie ma funkcjonalności zgłaszania błędów lub gdy chcemy wykonać jakąś czynność po wystąpieniu błędu zapisanego w plik log możemy wykorzystać powershella. Ogólny niniejszego poradnika jest tak aby analizować plik log w poszukiwaniu konkretnej wartości np. „error”.Założenia: poszukujemy danego ciągu w pliku log co kilka/kilkanaście minut i w przypadku jego wystąpienia wykonujemy jakąś czynność. Jednocześnie zliczamy ilość wykrytych ciągów znaków i tą ilość zapisujemy w pliku zewnętrznym. Każdego kolejnego dnia zerujemy ilość wystąpienia błędów z uwagi na analizowanie nowego pliku log.W pierwszej kolejności musimy ustalić jaką nazwę ma plik logów. Jeżeli każdego dnia bieżący plik log ma taką samą nazwę a do nazwy archiwalnych plików logów dodawana jest np. data ustawiamy zmienną na sztywno np. $filepathdata = „C:\program\Logs\logs.log.txt” W przypadku gdy bieżący plik log w swojej nazwie zawiera datę np. w postaci yyyy-MM-dd należy tak przygotować zmienną by zawsze zawierała bieżącą datę. Do tego celu możemy wykorzystać polecenie get-date wraz z odpowiednim formatowaniem daty np. $filepathdata = „C:\program\Logs\logs_”+(get-date -format yyyy-MM-dd)+”.txt” w tym przypadku docelowa nazwa pliku przykładowo będzie wyglądać tak: log_2024-10-20.txt. Na potrzeby naszego skryptu tworzymy plik licznik.txt. Do pliku będziemy zapisywać ilość wystąpienia błędów w każdym kolejnym dniu. Wartość tą będziemy resetować każdego dnia. W tym …