Chcę, aby skrypt programu Power Shell był uruchamiany raz na minutę w tle. Nie może pojawić się okno. Jak mam to zrobić?Uruchom skrypt programu Power Shell w tle raz na minutę.
Odpowiedz
pomocą Harmonogramu zadań systemu Windows i uruchomić skrypt tak:
powershell -File myScript.ps1 -WindowStyle Hidden
Ponadto utworzyć skrypt, który działa w ramach określonego konta użytkownika, a nie tylko wtedy, gdy że użytkownik jest zalogowany. W przeciwnym razie zobaczysz okno konsoli.
Teraz, ale jak uruchomić Power Shell w tle? – magol
@magol - Ile więcej "tła" musisz zdobyć? Harmonogram zadań systemu Windows określa sposób uruchamiania zadania "w tle", w którym to przypadku zadaniem byłoby uruchomienie PowerShell i uruchomienie określonego skryptu. –
Cóż, aby być uczciwym, początkowa odpowiedź nie spowodowałaby procesu w tle, jeśli bieżący użytkownik jest administratorem i nie zmienia domyślnych ustawień zadania. Jednak jawne zezwolenie na to zadanie, niezależnie od zalogowanego użytkownika, naprawia to. Hm. Mój skrypt testowy działał dotychczas 181 razy.Znowu powinienem wyłączyć to zadanie :-) – Joey
Być może ten scenariusz wystarczy. Nie uruchamiamy programu PowerShell co minutę (jest to drogie, BTW). Zamiast tego uruchamiamy go raz, wywołując dodatkowy skrypt, który wywołuje skrypt roboczy raz na minutę (lub faktycznie czeka minutę po tym, jak skrypt roboczy zakończy działanie lub się nie powiedzie).
Tworzenie startowego Invoke-MyScript.ps1:
for(;;) {
try {
# invoke the worker script
C:\ROM\_110106_022745\MyScript.ps1
}
catch {
# do something with $_, log it, more likely
}
# wait for a minute
Start-Sleep 60
}
Uruchom to z Cmd (np starcie pliku .bat):
start /min powershell -WindowStyle Hidden -Command C:\ROM\_110106_022745\Invoke-MyScript.ps1
Pojawi się okno PowerShell przez chwilę, ale jest zminimalizowany z powodu start /min
i za chwilę zostaje ukryty na zawsze. Tak więc w rzeczywistości pojawia się tylko ikona paska zadań, a nie samo okno. Nie jest aż tak źle.
Te odpowiedzi są histeryczne! Jeśli chcesz uruchomić skrypt powershell jako zadanie w tle spróbować rozpoczęcie pracy. \ Skrypt z CLI w folderze skryptów w domu.
Zaplanuj zadanie, aby być uruchamiane jako System. Komenda poniżej zaplanuje skrypt do uruchomienia w tle bez pokazywania okna konsoli PowerShell:
schtasks /create /tn myTask /tr "powershell -NoLogo -WindowStyle hidden -file myScript.ps1" /sc minute /mo 1 /ru System
/ru
przełącznik pozwala zmienić kontekst użytkownika, w którym zaplanowane zadanie zostanie wykonane.
Dzięki Xemlock! W moim przypadku Twoja sugestia była jedynym rozwiązaniem, które nie generowało absolutnie żadnego okna PowerShell. – WebFixItMan
Na karcie [Ogólne] we właściwościach Harmonogramu zadań dla zadania, zaznaczenie pola wyboru "Uruchom, czy użytkownik jest zalogowany, czy nie", zapobiega wyświetlaniu się okna na komputerze z systemem Windows 7.
Jeśli chcesz uruchomić skrypt automatycznie w przedziale czasu. (Dla systemu operacyjnego Windows)
1) Open Schedule tasks from control panel.
2) Select Task Scheduler Library from left side window.
3) select Create Task from right side window.
4) Enter Name in General tab (any name).
5) Open Triggers tab -> New
6) Select interval as needed.Use Advanced settings for repeat task.
7) Open Actions tab ->New
8) Copy/Paste following line in Program/script *
* Here D:\B.ps1 in code is path to my B.ps1 file
C: \ Windows \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe D: \ B.ps1
9) ok and apply changes
10) Done!
# Filecheck.ps1
# Version 1.0
# Use this to simply test for the existance of an input file... Servers.txt.
# I want to then call another script if the input file exists where the
# servers.txt is neded to the other script.
#
$workpath=".\Server1\Restart_Test"
# Created a functon that I could call as part of a loop.
function Filecheck
{
if (test-path $workpath\servers.txt)
{
rename-item $workpath\servers.txt servers1.txt
"Servers.txt exist... invoking an instance of your script agains the list of servers"
Invoke-Expression .\your_Script.ps1
}
Else
{
"sleeping"
Start-Sleep -Seconds 60
}
}
Do
{
Filecheck
$fred=0
# Needed to set a variabe that I could check in the while loop.
# Probably a better way but this was my way.
}
While($fred -lt 1)
- 1. Rozmieść projekt bazy danych (.dbproj) przy użyciu programu Power Shell
- 2. Wywołanie obiektu chrome w powłoce Power Shell
- 3. Znajdowanie wersji IIS przy użyciu programu Power Shell
- 4. Połącz się z serwerem SQL za pomocą programu Power Shell
- 5. Zmień nazwę po skopiowaniu przy użyciu programu Power Shell
- 6. Power Shell Web Scraping SSL/TSL Issue
- 7. Tornado WebSocket zamyka się raz na minutę
- 8. Przeładuj ścieżkę w powłoce Power Shell
- 9. Rekursywnie wyświetlaj katalogi w programie Power Shell
- 10. Jak działa wątkowanie w powłoce Power Shell?
- 11. dokowanie uruchom skrypt powłoki w tle bez zamykania kontenera
- 12. Uruchom skrypt ruby w tle bez używania ekranu
- 13. Jak sprawić, aby Power Shell czekał na instalację exe?
- 14. Skrypt uruchom/uruchom skrypt php z parametrami
- 15. Ścieżka aktualnie wykonywanego skryptu powłoki Power Shell
- 16. Uruchom odbiornik GPS w tle na Androidzie
- 17. shell skrypt: if
- 18. Dodaj użytkownika do grupy programu SharePoint 2010 przy użyciu programu Power Shell
- 19. Shell tablice skrypt
- 20. Publikowanie witryny sieci Web na platformie Azure za pomocą programu Power Shell przy użyciu SetParameters.xml
- 21. Jak odczytać plik XML z Internetu przy użyciu programu Power Shell
- 22. W jaki sposób można uzyskać opisy wyjątków programu Power Shell w ciągu znaków?
- 23. Uruchom setUp tylko raz
- 24. Uruchom plik nietoperza w tle
- 25. AndroidRX - uruchom metodę w tle
- 26. Pokaż zawartość w czasie rzeczywistym pliku w powłoce Power Shell
- 27. Uruchom skrypt przy odblokowywaniu?
- 28. Wyświetlanie okna dialogowego WinForms ze szczególnym uwzględnieniem skryptu Power Shell
- 29. Konwersja pliku txt do pliku CSV w trybie Power Shell
- 30. Zdobądź ostatni element rurociągu w powłoce Power Shell
Czy wiesz jak stworzyć zaplanowane zadanie? – ghostdog74