Zadaniem poniższego skryptu PS jest przeszukiwanie zasobu sieciowego w poszukiwaniu pliku mającego w nazwie datę wczorajszą, oraz wysłania wiadomości e-mail w przypadku jego znalezienia.
$emailFrom = 'powiadomienia@domena.pl' $secstring = '01000000d08c9ddf0115d1118c7a00c04fc297eb0100000060a18ed3a9312c4c939f8408d224ed9f00000000020000000000106600000001000020000000e0d0d688c598b0dc944b81409d0f7ab8dea52d0612f7d5e56b84c09d0d13eb07000000000e800000000200002000000036d3059ac438090bdbb1a0b4b2bb2fa7a5ffab65d96fa02a1aeab9667b54bb5f20000000a1f6442ff2bb3d90f1fd93b06d9178eec8239eb71fe330ff3c8fe5167b9120d1400000002dca53a7f97ac0d52ea085d15fa3dd501aec6e7eb72e5c23577ec53ef7f40c498573d0d7f58d57ca54521b0a4ffc77618d33178363f897ec08a72305078af168' $credential = New-Object System.Management.Automation.PSCredential($emailFrom, ($secstring | ConvertTo-SecureString)) $patch = '\\192.168.5.2\pliki\' $date = Get-Date -Format "yyyy_MM_dd" $day_minus_one = (Get-Date).AddDays(-1) | Get-Date -Format "yyyy_MM_dd" $time = get-Date -Format "HH_mm" $emailTo = "odbiorca1@domena.pl" , "odbiorca2@domena.pl" $files = Get-ChildItem -path $patch\*$day_minus_one.pdf "Wykonanie skryptu dnia $date o godzinie $time" >> $patch\script_activity.txt if ($files) { $files | Export-CSV $patch\revoke_privileges_$date.txt $body = $files | Out-String Send-MailMessage -To $emailTo -From $emailFrom -encoding utf8 -Subject 'Odbior uprawnien uzytkownikowi' -Body "Ponizej wykazane sa nazwy plikow - skanow wnioskow o nadanie uprawnien czasowych do pracy w systemie, ktore trzeba wycofac. $body Aby skrypt spelnial swoje zadanie data odebrania uprawnienia powinna znajdowac sie na koncu nazwy pliku PDF w formacie rrrr_MM_dd, tj. np KowalskiJanek_2023_05_05_W_KB_2023_05_10.pdf." <# -Attachments $patch\revoke_privileges_$date.txt #> -Credential $credential -SmtpServer 'server.smtp.com.pl' -Port 587 } else { exit }
SecureString (zaszyfrowane hasło – w tym przypadku do konta e-mail) można uzyskać konwertując hasło za pomocą komendy:
"haslo_czystym_tekstem" | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File "d:\Password.txt"
Skrypt PS można skonwertować do pliku *.exe np. przy pomocy programu Win-PS2EXE-GUI.
Źródło:
https://stackoverflow.com/questions/14319272/powershell-scan-folder-for-certain-file-name-and-write-to-a-log-file-and-email
https://www.itprotoday.com/powershell/how-encrypt-powershell-scripts
https://powershellguru.com/instant-guide-to-convert-ps1-to-exe/