Tampilkan pemberitahuan kepada pengguna menggunakan PowerShell

Terlepas dari kenyataan bahwa PowerShell adalah bahasa konsol, kadang-kadang perlu untuk memberi tahu pengguna tentang peristiwa tertentu atau kebutuhan untuk melakukan tindakan tertentu dari skrip PowerShell. Misalnya, tampilkan pemberitahuan tentang akhir beberapa skrip PoSh yang sudah berjalan lama, atau tentang terjadinya beberapa peristiwa penting.

Cara termudah untuk menampilkan jendela dengan tes sewenang-wenang melalui subsistem skrip Windows - Wscript.

Kode berikut akan menampilkan kotak teks biasa dengan teks yang diperlukan dan tombol OK.

$ wshell = Objek Baru -ComObject Wscript.Shell
$ Output = $ wshell.Popup ("Skrip pembuatan laporan selesai")

Menggunakan berbagai properti metode Popup, Anda dapat menyesuaikan tampilan kotak pesan modal. Secara khusus, Anda dapat kembali ke skrip hasil dari jawaban pengguna atas pertanyaan (Ya / Tidak).

$ Output = $ wshell.Popup ("Skrip untuk menghasilkan laporan selesai! Apakah Anda ingin menampilkannya di layar?", 0, "Laporan sudah siap", 4 + 32)

Sintaks umum dan parameter metode Popup:

Munculan (,,,)

Parameter:

  • - string, teks pesan.
  • - opsional, angka. Jumlah detik setelah mana jendela akan ditutup secara otomatis.
  • - opsional, string. Teks judul jendela pesan.
  • - opsional, angka. Kombinasi bendera menentukan jenis tombol dan ikon. Nilai bendera yang mungkin:
    • 0 - tombol OK.
    • 1 - tombol OK dan Cancel.
    • 2 - Stop, Ulangi, Lewati tombol.
    • 3 - Ya, Tidak, Batalkan tombol.
    • 4 - tombol Ya dan Tidak.
    • 5 - Ulangi dan Batalkan tombol.
    • 16 - Ikon Stop.
    • 32 - Ikon pertanyaan.
    • 48 - Ikon Seruan.
    • 64 - Ikon informasi.

Deskripsi: mengembalikan nilai integer yang dapat digunakan untuk mengetahui tombol mana yang ditekan oleh pengguna. Nilai yang mungkin:

  • -1 - batas waktu.
  • 1 - tombol OK.
  • 2 - tombol Batal.
  • 3 - Tombol Stop.
  • 4 - tombol Ulangi.
  • 5 - Tombol Lewati.
  • 6 - tombol Ya.
  • 7 - Tidak ada tombol.

Pesan pop-up (ballons) yang lebih menarik dan menyenangkan dapat ditampilkan di Windows 7, 8.1 dan 10 melalui Windows Forms API. Kode PowerShell berikut ini akan menampilkan pesan pop-up di sebelah panel notifikasi Windows 10, yang secara otomatis akan menghilang setelah 10 detik.

Add-Type -AssemblyName System.Windows.Forms
$ global: balmsg = New-Object System.Windows.Forms.NotifyIcon
$ path = (Dapatkan-Proses -id $ pid) .Path
$ balmsg.Icon = [System.Drawing.Icon] :: ExtractAssociatedIcon ($ path)
$ balmsg.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon] :: Peringatan
$ balmsg.BalloonTipText = 'Ini adalah teks dari pesan pop-up untuk pengguna Windows 10'
$ balmsg.BalloonTipTitle = "Peringatan $ Env: USERNAME"
$ balmsg.Visible = $ true
$ balmsg.ShowBalloonTip (10000)

Selain itu, untuk membuat pesan sembulan berwarna-warni di Windows 10 (PowerShell 5.0+), Anda dapat menggunakan modul PowerShell yang terpisah, BurntToast dari galeri PowerShell.

Modul ini diinstal dari repositori online menggunakan manajer paket Windows 10:
Instal-Modul -Nama BurntToast

Sekarang, misalnya, dalam skrip yang sebelumnya dianggap untuk memutuskan sambungan secara otomatis dari jaringan Wi-FI saat tersambung ke Ethernet, Anda dapat menambahkan pemberitahuan berwarna:

New-BurntToastNotification -Text "Memutuskan sambungan dari jaringan Wi-Fi", "Anda terputus dari jaringan Wi-Fi, karena Perangkat Anda terhubung ke koneksi Ethernet berkecepatan tinggi." -AppLogo C: \ PS \ changenetwork.png

Jadi sekarang Anda tahu cara menampilkan notifikasi pengguna melalui PowerShell. Jika pengguna memiliki speaker, Anda bahkan dapat memainkannya:

[konsol] :: beep (440.500)
[konsol] :: beep (440.500)
[konsol] :: beep (440.500)
[konsol] :: beep (349.350)
[konsol] :: bip (523.150)
[konsol] :: beep (440.500)
[konsol] :: beep (349.350)
[konsol] :: bip (523.150)
[konsol] :: bip (440.1000)
[konsol] :: beep (659.500)
[konsol] :: beep (659.500)
[konsol] :: beep (659.500)
[konsol] :: beep (698.350)
[konsol] :: bip (523.150)
[konsol] :: beep (415.500)
[konsol] :: beep (349.350)
[konsol] :: bip (523.150)
[konsol] :: bip (440.1000)
[konsol] :: beep (880.500)
[konsol] :: beep (440.350)
[konsol] :: bip (440.150)
[konsol] :: beep (880.500)
[konsol] :: bip (830.250)
[konsol] :: beep (784.250)
[konsol] :: beep (740.125)
[konsol] :: beep (698.125)
[konsol] :: beep (740.250)
[konsol] :: beep (455.250)
[konsol] :: beep (622.500)
[konsol] :: beep (587.250)
[konsol] :: beep (554.250)
[konsol] :: beep (523.125)
[konsol] :: beep (466.125)
[konsol] :: beep (523.250)
[konsol] :: beep (349.125)
[konsol] :: beep (415.500)
[konsol] :: beep (349.375)
[konsol] :: beep (440.125)
[konsol] :: beep (523.500)
[konsol] :: bip (440.375)
[konsol] :: beep (523.125)
[konsol] :: beep (659.1000)
[konsol] :: beep (880.500)
[konsol] :: beep (440.350)
[konsol] :: bip (440.150)
[konsol] :: beep (880.500)
[konsol] :: bip (830.250)
[konsol] :: beep (784.250)
[konsol] :: beep (740.125)
[konsol] :: beep (698.125)
[konsol] :: beep (740.250)
[konsol] :: beep (455.250)
[konsol] :: beep (622.500)
[konsol] :: beep (587.250)
[konsol] :: beep (554.250)
[konsol] :: beep (523.125)
[konsol] :: beep (466.125)
[konsol] :: beep (523.250)
[konsol] :: beep (349.250)
[konsol] :: beep (415.500)
[konsol] :: beep (349.375)
[konsol] :: beep (523.125)
[konsol] :: beep (440.500)
[konsol] :: beep (349.375)
[konsol] :: beep (261.125)
[konsol] :: bip (440.1000)