Bagaimana mungkin menjalankan skrip PowerShell tanpa menampilkan jendela atau tanda lain apa pun kepada pengguna?
Dengan kata lain, skrip harus berjalan secara diam-diam di latar belakang tanpa tanda apa pun kepada pengguna.
Kredit ekstra untuk jawaban yang tidak menggunakan komponen pihak ketiga :)
windows
powershell
scripting
batch-file
silent
Thomas Bratt
sumber
sumber
Jawaban:
Anda dapat menjalankannya seperti ini (tetapi ini menunjukkan jendela sebentar):
Atau Anda menggunakan file pembantu yang saya buat untuk menghindari jendela bernama PsRun.exe yang melakukan hal itu. Anda dapat mengunduh file sumber dan exe Jalankan tugas terjadwal dengan WinForm GUI di PowerShell . Saya menggunakannya untuk tugas terjadwal.
Diedit: seperti yang dicatat Marco, parameter -windowstyle ini hanya tersedia untuk V2.
sumber
-WindowStyle Hidden
jika tugas disetel keRun whether user is logged on or not
tab Umum di bawah bagian "Opsi Keamanan".Saya mengalami masalah yang sama. Saya menemukan jika Anda pergi ke Tugas di Penjadwal Tugas yang menjalankan skrip PowerShell.exe , Anda dapat mengklik " Jalankan apakah pengguna masuk atau tidak " dan itu tidak akan pernah menampilkan jendela PowerShell saat tugas berjalan.
sumber
Anda dapat menggunakan Ekstensi Komunitas PowerShell dan melakukan ini:
Anda juga dapat melakukan ini dengan VBScript:
http://blog.sapien.com/index.php/2006/12/26/more-fun-with-scheduled-powershell/Jadwalkan Tugas PowerShell Tersembunyi (Arsip Internet)
Lebih menyenangkan dengan PowerShell terjadwal (Internet Archive)
(Melalui utas forum ini .)
sumber
Berikut adalah pendekatan yang tidak memerlukan argumen baris perintah atau peluncur terpisah. Ini tidak sepenuhnya tidak terlihat karena sebuah jendela muncul sebentar saat startup. Tapi kemudian dengan cepat menghilang. Jika tidak apa-apa, menurut saya, ini adalah pendekatan termudah jika Anda ingin meluncurkan skrip dengan mengklik dua kali di explorer, atau melalui pintasan menu Start (termasuk, tentu saja submenu Startup). Dan saya suka itu adalah bagian dari kode skrip itu sendiri, bukan sesuatu yang eksternal.
Letakkan ini di depan skrip Anda:
sumber
Ini satu baris:
Meskipun ini mungkin untuk mem-flash jendela dengan sangat singkat, itu seharusnya jarang terjadi.
sumber
Saya mengalami masalah ini saat menjalankan dari c #, pada Windows 7, layanan "Deteksi Layanan Interaktif" muncul saat menjalankan jendela PowerShell tersembunyi sebagai akun SISTEM.
Menggunakan parameter "CreateNoWindow" mencegah layanan ISD memunculkan peringatannya.
sumber
Saya pikir cara terbaik untuk menyembunyikan layar konsol PowerShell saat Anda menjalankan skrip latar belakang adalah kode ini ( jawaban " Bluecakes ").
Saya menambahkan kode ini di awal semua skrip PowerShell saya yang harus saya jalankan di latar belakang.
sumber
ps1 disembunyikan dari Penjadwal Tugas dan pintasan juga
sumber
Saya telah membuat alat kecil yang meneruskan panggilan ke alat konsol apa pun yang ingin Anda mulai tanpa jendela hingga ke file asli:
https://github.com/Vittel/RunHiddenConsole
Setelah kompilasi, cukup ganti nama file yang dapat dieksekusi menjadi "<targetExecutableName> w.exe" (tambahkan "w"), dan letakkan di sebelah file yang dapat dieksekusi asli. Anda kemudian dapat memanggil eG powershellw.exe dengan parameter biasa dan itu tidak akan memunculkan jendela.
Jika seseorang memiliki ide bagaimana memeriksa apakah proses yang dibuat sedang menunggu masukan, saya akan dengan senang hati menyertakan solusi Anda :)
sumber
MessageBox
tanpa setiap kilatan jendela pada startup (yang membutuhkan EXE disusun sebagai Winexe, bukan aplikasi konsol, dan membutuhkan Task Scheduler harus ditetapkan untuk "Run hanya ketika pengguna login pada "jadi dialog ditampilkan di sesi desktop saat ini.) Terima kasih telah menerapkan ini, powershellw.exe telah ada di daftar keinginan saya selama bertahun-tahun!Berikut adalah solusi yang berfungsi di windows 10 yang tidak menyertakan komponen pihak ketiga. Ia bekerja dengan membungkus skrip PowerShell ke dalam VBScript.
Langkah 1: kita perlu mengubah beberapa fitur windows agar VBScript dapat menjalankan PowerShell dan membuka file .ps1 dengan PowerShell secara default.
-pergi untuk menjalankan dan ketik "regedit". Klik ok dan kemudian biarkan berjalan.
-paste jalur ini "HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ Shell" dan tekan enter.
-sekarang buka entri di sebelah kanan dan ubah nilainya menjadi 0.
-Buka PowerShell sebagai administrator dan ketik "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned", tekan enter dan konfirmasi perubahan dengan "y" lalu enter.
Langkah 2: Sekarang kita dapat mulai membungkus skrip kita.
-simpan skrip Powershell Anda sebagai file .ps1.
-buat dokumen teks baru dan tempelkan skrip ini.
-sekarang ubah jalur file ke lokasi skrip .ps1 Anda dan simpan dokumen teks.
-Sekarang klik kanan pada file dan pergi untuk mengganti nama. Kemudian ubah ekstensi nama file menjadi .vbs dan tekan enter lalu klik ok.
SELESAI! Jika sekarang Anda membuka .vbs, Anda seharusnya tidak melihat jendela konsol saat skrip Anda berjalan di latar belakang.
pastikan untuk memberi suara positif jika ini berhasil untuk Anda!
sumber
Berikut adalah demo menyenangkan mengontrol berbagai status konsol, termasuk meminimalkan dan tersembunyi.
sumber