Harmonogram zadań - jak uruchomić skrypt powershell z wieloma parametrami?


5

Używam powershell.exe jako Programu i ” -Command "& C:\Windows\logon.ps1; exit $LASTEXITCODE"; ExecutionPolicy RemoteSigned „jako parametr, ale nie działa.

Niektóre rzeczy chciałbym:

  1. uzyskanie wyniku w harmonogramie zadań, więc mogę wiedzieć, czy wszystko działało prawidłowo lub czy wystąpiły błędy

  2. pobierz wynik skryptu do pliku output.txt (możliwy jest przyrostowy plik?)

  3. uruchom skrypt ukryty


Możesz użyć pliku wsadowego do wykonania swojej pracy (używając PowerShell), sprawdź kod wyjścia / poziom błędu, przekierowanie wyjścia itp. Możesz oczywiście uruchom to ukryte . Jeśli plik wsadowy jest nieakceptowalny, możesz bezpośrednio uruchomić ukryty skrypt PS ( 1 , 2 ).
Karan

ok, ale jeśli chcę podać argumenty w samym Harmonogramie zadań, czy jest to możliwe? Jak to zrobić?
FernandoSBS

Odpowiedzi:


2

Nie wiem, czy zapomniałeś - w twoim pytaniu, ale to -ExecutionPolicy. Jeśli ten skrypt nie jest podpisany, nie wykona również tego skryptu, możesz użyć bypass jako polisa wykonawcza, aby to wykluczyć.

Wątpię, czy możesz uruchamiać skrypty i polecenia po kolei w linii poleceń. Dodaj exit $LASTEXITCODE do skryptu i uruchom go za pomocą -File C:\script.ps1.

Jeśli by biegnij ukryty masz na myśli brak okna konsoli, zwykle nazywam moje skrypty jak

powershell.exe -noprofile -executionpolicy bypass -file C:\script.ps1

i nigdy nie zobaczę okna.

Aby uzyskać dane wyjściowe skryptu do pliku, wprowadź do niego polecenia Tee-Object

"Hello World" | Tee-Object C:\output.file

Możesz nazwać plik, co chcesz, zaimplementować logikę w skrypcie, aby zwiększyć nazwę pliku, lub - mój ulubiony - użyć RRRRMMddhhmmss w nazwie pliku.


Aktualizacja

Również wzięte z Strona Technet firmy Microsoft na PowerShell:

Bloki skryptu muszą być ujęte w nawiasy klamrowe ({}). Możesz określ blok skryptu tylko podczas uruchamiania PowerShell.exe w Windows PowerShell . Wyniki skryptu są zwracane do powłoki macierzystej jako deserializowane obiekty XML, a nie obiekty na żywo.

Jeśli wartością polecenia jest ciąg, Polecenie musi być ostatnim parametrem w poleceniu, ponieważ wszystkie znaki wpisane po poleceniu są interpretowane jako argumenty polecenia .


ok większość rzeczy działała, ale nadal nie otrzymuję wyniku w pliku tekstowym. Czy możesz dać mi więcej wskazówek na ten temat? Skrypt działa automatycznie w loggon, ale nie wysyła go do pliku. Używam go z: -file "C:\Eternita\Arruma_Maps.ps1" -executionpolicy bypass -noexit Czy konieczne jest, aby plik wyjściowy istniał tak, aby był wyświetlany, czy skrypt tworzy plik, jeśli nie istnieje?
FernandoSBS

również, którego wyzwalacza należy użyć, chcę, aby uruchamiał się za każdym razem, gdy odblokuję komputer po wygaszaczu ekranu lub włączeniu zasilania
FernandoSBS

Musisz potokować wyjście do cmdletu, który wyśle ​​wynik do pliku. Wklej powyższy przykład i to powinno Cię zacząć. O ile to powoduje, że jest to osobne pytanie i należy je zadać w oddzielnym pytaniu SE.
MDMoore313

użyłem obiektu tee w skrypcie. co jeszcze? Nie rozumiem
FernandoSBS
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.