Jak można uruchomić skrypt PowerShell bez wyświetlania okna lub innego znaku użytkownikowi?
Innymi słowy, skrypt powinien działać cicho w tle, bez żadnego znaku dla użytkownika.
Dodatkowe punkty za odpowiedź, która nie korzysta z komponentów innych firm :)
windows
powershell
scripting
batch-file
silent
Thomas Bratt
źródło
źródło
Odpowiedzi:
Możesz uruchomić to w ten sposób (ale to pokazuje przez chwilę okna):
Lub możesz użyć pliku pomocniczego, który utworzyłem, aby uniknąć okna o nazwie PsRun.exe, które robi dokładnie to. Możesz pobrać plik źródłowy i exe Uruchom zaplanowane zadania za pomocą interfejsu graficznego WinForm w programie PowerShell . Używam go do zaplanowanych zadań.
Edytowano: jak zauważył Marco ten parametr -windowstyle jest dostępny tylko dla wersji 2.
źródło
-WindowStyle Hidden
jeśli zadanie jest ustawione naRun whether user is logged on or not
na karcie Ogólne w sekcji „Opcje bezpieczeństwa”.Miałem ten sam problem. Dowiedziałem się, że jeśli przejdziesz do zadania w Harmonogramie zadań, który uruchamia skrypt powershell.exe , możesz kliknąć „ Uruchom, niezależnie od tego, czy użytkownik jest zalogowany ”, a to nigdy nie wyświetli okna PowerShell po uruchomieniu zadania.
źródło
Możesz użyć rozszerzeń społeczności programu PowerShell i zrobić to:
Możesz to również zrobić za pomocą VBScript:
http://blog.sapien.com/index.php/2006/12/26/more-fun-with-scheduled-powershell/Zaplanuj ukryte zadania programu PowerShell (archiwum internetowe)
Więcej zabawy z zaplanowanym PowerShell (archiwum internetowe)
(Przez ten wątek na forum .)
źródło
Oto podejście, które nie wymaga argumentów wiersza poleceń ani osobnego programu uruchamiającego. Nie jest całkowicie niewidoczne, ponieważ podczas uruchamiania pojawia się okno. Ale potem szybko znika. W porządku, myślę, że jest to najłatwiejsze podejście, jeśli chcesz uruchomić skrypt, klikając dwukrotnie w eksploratorze lub za pomocą skrótu w menu Start (w tym oczywiście podmenu Startup). I podoba mi się, że jest to część kodu samego skryptu, a nie coś zewnętrznego.
Umieść to na początku swojego skryptu:
źródło
Oto jedna linijka:
Chociaż możliwe jest bardzo krótkie miganie okna, powinno to być rzadkie zjawisko.
źródło
Miałem ten problem podczas uruchamiania z C #, w systemie Windows 7, usługa „Wykrywanie usług interaktywnych” pojawiała się podczas uruchamiania ukrytego okna programu PowerShell jako konta SYSTEM.
Użycie parametru „CreateNoWindow” zapobiegło wyświetlaniu ostrzeżenia przez usługę ISD.
źródło
Myślę, że najlepszym sposobem na ukrycie ekranu konsoli PowerShell podczas uruchamiania skryptów w tle jest ten kod (odpowiedź „ Bluecakes ”).
Dodaję ten kod na początku wszystkich moich skryptów PowerShell, które muszę uruchomić w tle.
źródło
ps1 ukryty w Harmonogramie zadań i skrócie
źródło
Utworzyłem małe narzędzie przekazujące wywołanie do dowolnego narzędzia konsoli, które chcesz uruchomić bez okien, do oryginalnego pliku:
https://github.com/Vittel/RunHiddenConsole
Po skompilowaniu po prostu zmień nazwę pliku wykonywalnego na „<targetExecutableName> w.exe” (dodaj „w”) i umieść go obok oryginalnego pliku wykonywalnego. Następnie możesz wywołać eG powershellw.exe ze zwykłymi parametrami i nie pojawi się okno.
Jeśli ktoś ma pomysł, jak sprawdzić, czy stworzony proces czeka na wejście, z chęcią dołączę Twoje rozwiązanie :)
źródło
MessageBox
bez jakiegokolwiek błysku okna na starcie (wymagające EXE skompilowane jako Winexe, a nie aplikacji konsoli i wymagającej Task Scheduler być ustawiony na „Run tylko wtedy, gdy użytkownik jest zalogowany on ”, więc w bieżącej sesji na pulpicie pojawiają się okna dialogowe. Dziękuję za wdrożenie programu powershellw.exe od lat na mojej liście życzeń!Oto działające rozwiązanie w systemie Windows 10, które nie zawiera żadnych komponentów innych firm. Działa poprzez zawijanie skryptu PowerShell do VBScript.
Krok 1: musimy zmienić niektóre funkcje systemu Windows, aby umożliwić VBScript uruchamianie PowerShell i domyślnie otwierać pliki .ps1 za pomocą PowerShell.
-Idź do uruchomienia i wpisz „regedit”. Kliknij OK, a następnie pozwól mu działać.
-wklej tę ścieżkę „HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ Shell” i naciśnij enter.
- teraz otwórz wpis po prawej stronie i zmień wartość na 0.
-open PowerShell jako administrator i wpisz „Set-ExecutionPolicy -ExecutionPolicy RemoteSigned”, naciśnij enter i potwierdź zmianę za pomocą „y”, a następnie wprowadź.
Krok 2: Teraz możemy rozpocząć pakowanie naszego skryptu.
-zapisz swój skrypt Powershell jako plik .ps1.
-utwórz nowy dokument tekstowy i wklej ten skrypt.
- teraz zmień ścieżkę do pliku na lokalizację twojego skryptu .ps1 i zapisz dokument tekstowy.
-Teraz kliknij plik prawym przyciskiem myszy i przejdź do zmiany nazwy. Następnie zmień rozszerzenie nazwy pliku na .vbs i naciśnij klawisz Enter, a następnie kliknij przycisk OK.
GOTOWE! Jeśli teraz otworzysz plik .vbs, nie powinno być widać żadnego okna konsoli, gdy skrypt działa w tle.
pamiętaj, aby zagłosować za, jeśli to zadziała!
źródło
Oto zabawne demo kontrolowania różnych stanów konsoli, w tym minimalizowania i ukrywania.
źródło