Próbuję uruchomić ten skrypt w PowerShell. Zapisałem poniższy skrypt jak ps.ps1
na pulpicie.
$query = "SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 2"
Register-WMIEvent -Query $query -Action { invoke-item "C:\Program Files\abc.exe"}
Zrobiłem skrypt wsadowy, aby uruchomić ten skrypt PowerShell
@echo off
Powershell.exe set-executionpolicy remotesigned -File C:\Users\SE\Desktop\ps.ps1
pause
Ale pojawia się ten błąd:
./
i posiadania flagi wykonywalnej w systemie Unix.Wyjaśniam zarówno, dlaczego chcesz wywołać skrypt PowerShell z pliku wsadowego, a jak to zrobić w moim blogu tutaj .
Właśnie tego szukasz:
A jeśli chcesz uruchomić skrypt PowerShell jako administrator, użyj tego:
Zamiast sztywno kodować całą ścieżkę do skryptu PowerShell, zalecam umieszczenie pliku wsadowego i pliku skryptu PowerShell w tym samym katalogu, jak opisano w moim blogu.
źródło
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass Invoke-WebRequest https://www.example.com/example.ics -OutFile C:\_my\script.ics' -Verb RunAs}";
lubpowershell -Command "Invoke-WebRequest https://www.example.com/example.ics -OutFile c:\_my\file.ics"
używam opcji -File do tego samego w pliku .ps1 lub(New-Object Net.WebClient).DownloadFile
. Jakieś pomysły?Jeśli chcesz uruchomić z bieżącego katalogu bez pełnej ścieżki, możesz użyć:
źródło
Jeśli uruchamiasz plik wsadowy wywołujący PowerShell jako administrator, lepiej uruchom go w ten sposób, oszczędzając kłopotów:
Lepiej jest użyć
Bypass
...źródło
Jeśli chcesz uruchomić kilka skryptów, możesz użyć,
Set-executionpolicy -ExecutionPolicy Unrestricted
a następnie zresetować za pomocąSet-executionpolicy -ExecutionPolicy Default
.Pamiętaj, że zasady wykonywania są sprawdzane tylko po rozpoczęciu ich wykonywania (a przynajmniej tak się wydaje), dzięki czemu możesz uruchamiać zadania w tle i natychmiast resetować zasady wykonywania.
źródło
Innym łatwym sposobem na wykonanie skryptu ps z partii jest po prostu włączenie go między ECHO a znakami Przekierowania (> i >>), przykład:
Ostatni wiersz usuwa utworzony plik tymczasowy.
źródło
Jeśli skrypt logowania do programu PowerShell działa po 5 minutach (tak jak mój) na serwerze w 2012 r., Na serwerze znajduje się ustawienie GPO - „Konfiguruj skrypt logowania Opóźnij” ustawienie domyślne „nieskonfigurowane” spowoduje pozostawienie 5-minutowego opóźnienia przed uruchomieniem skryptu logowania.
źródło
Test małej próbki. Cmd
źródło