jeśli jesteś nowy w języku skryptowym PowerShell i chcesz dowiedzieć się, jak uruchomić skrypt PowerShell, trafiłeś do właściwego posta na blogu. Ten blog będzie tutorialem obejmującym typowe sposoby uruchamiania skryptów i kilka problemów, które mogą się pojawić.
spis treści
wymagania wstępne
Ten artykuł będzie dla ciebie przewodnikiem po tym, jak uruchomić PowerShell na komputerze lokalnym. Jeśli chcesz kontynuować, upewnij się, że masz następujące wymagania wstępne przed rozpoczęciem tego artykułu.
- komputer z systemem Windows 10 z uprawnieniami administratora.
- Windows PowerShell w wersji 5 lub wyższej. Możesz również użyć PowerShell v7. Ten samouczek skupi się na Windows PowerShell, ponieważ system operacyjny Windows już go ma.
- dowolny edytor plików tekstowych
radzenie sobie z zasadami wykonywania
jeśli próbujesz po raz pierwszy wykonać skrypt Windows PowerShell, możesz napotkać wspólny problem. PowerShell prawdopodobnie zwróci komunikat o błędzie informujący, że skrypt „nie może być załadowany, ponieważ uruchomione skrypty są wyłączone w tym systemie”.
PS> .\GetServices.ps1 File C:\Temp\GetServices.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170. At line:1 char:1 .\GetServices.ps1 ~~~~~ CategoryInfo : SecurityError: (:) , PSSecurityException FullyQualifiedErrorId : UnauthorizedAccess
PowerShell zwraca powyższy komunikat o błędzie, gdy próbujesz uruchomić PowerShell z zasadami wykonywania ustawionymi na ograniczone, zdalnie podpisane lub wszystkie podpisane.
ograniczone
ograniczone to domyślna zasada ustawiona dla komputerów klienckich z systemem Windows. Jeśli używasz PowerShell po raz pierwszy, domyślna zasada prawdopodobnie zostanie ustawiona tak, aby ograniczać wszystkie skrypty.
nadal możesz wykonywać pojedyncze polecenia w terminalu, ale nie w pliku skryptu. Ograniczenie obejmuje każdy plik kończący się .ps1xml
, .psm1
lub .ps1
.
nieograniczony
nieograniczony pozwala uruchomić dowolny skrypt, jednak ostrzega przed wykonaniem, jeśli skrypt został pobrany z Internetu. Ta zasada jest zazwyczaj domyślna dla urządzeń innych niż Windows.
zdalnie podpisane
zdalnie podpisane Zasady umożliwiają uruchamianie dowolnego skryptu, który jest (a) podpisany cyfrowo lub (b) dowolny skrypt napisany na komputerze lokalnym z podpisem lub bez podpisu.
jeśli skrypt jest pobierany z Internetu i nie jest podpisany, musisz odblokować plik. Możesz to zrobić, klikając plik prawym przyciskiem myszy i wybierając Właściwości. Możesz też użyć polecenia polecenia PowerShell Unblock-File
dla tego konkretnego pliku skryptu.
używanie zdalnie podpisanej Zasady byłoby idealną opcją podczas uruchamiania skryptu pobranego z Internetu.
wszystkie podpisane
wszystkie podpisane wymaga, aby wszystkie skrypty zostały podpisane cyfrowo przez zaufanego wydawcę. Obejmuje to Skrypty pobrane z Internetu i napisane lokalnie na komputerze.
zmiana zasad realizacji programu PowerShell
w celu zmiany zasad realizacji:
- Otwórz Windows PowerShell z Uruchom jako Administrator, aby upewnić się, że masz najwyższe uprawnienia do wprowadzania zmian zasad.
![wyszukaj PowerShell w menu Start](https://adamtheautomator.com/wp-content/uploads/2020/12/04-PowerShellAdminMode.png)
2. Po otwarciu uruchom następujące polecenie PowerShell, aby ustawić zasady wykonywania komputera. Zasady realizacji, jak opisano powyżej, mogą być jednym z trzech różnych typów. Ten samouczek wykorzystuje użyteczną, ale nadal bezpieczną politykę wykonywania RemoteSigned.
ponieważ ten samouczek zakłada, że pobrałeś z Internetu plik skryptu GetServices. ps1, Ustaw zasady wykonywania na RemoteSigned.
PS> Set-ExecutionPolicy RemoteSigned
RemoteSigned execution policy zmusza cię do kryptograficznego podpisywania każdego skryptu PowerShell pobranego z Internetu, zanim PowerShell uruchomi go w Twoim systemie.
3. Powinieneś zobaczyć wyjście z prośbą o potwierdzenie działania. Wprowadź Y i naciśnij enter, aby potwierdzić zmianę zasad.
Execution Policy Change The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose you to the security risks described in the about_Execution_Policies help topic at https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy? Yes Yes to All No No to All Suspend Help (default is "N"):
w tym momencie wykonaj kolejne kroki, aby zbadać różne metody uruchamiania skryptu PowerShell na komputerze.
jak uruchomić skrypt PowerShell
aby zademonstrować uruchamianie skryptu PowerShell, w rzeczywistości potrzebujesz pliku skryptu do uruchomienia! Jeśli nie masz poręcznego, Pobierz ten plik ZIP i rozpakuj plik PS1. W środku znajdziesz prosty plik skryptu o nazwie GetServices. ps1.
Write-Output "Listing Computer Services"Get-Service
każdy skrypt PowerShell powinien kończyć się rozszerzeniem
.ps1
.
Korzystanie z konsoli
gdy już masz gotowy skrypt, możesz wykonać plik skryptu PowerShell na kilka różnych sposobów. Jednym z najczęstszych sposobów jest konsola PowerShell.
:
- Otwórz konsolę PowerShell, jak pokazano powyżej.
2. Przejdź do lokalizacji systemu plików, w której znajduje się skrypt, używając polecenia cmdlet PowerShell Set-Location
lub aliasu cd
. Skrypt tego poradnika znajduje się w C:\Temp katalog.
PS> cd C:\Temp\
3. Uruchom skrypt przy użyciu notacji kropkowej (.
). PowerShell to powłoka, która również szuka nazw poleceń. Aby odróżnić polecenie PowerShell od skryptu, musisz poprzedzić skrypt kropką. Kropka ta reprezentuje bieżący katalog.
PS> .\GetServices.ps1
jak uruchomić skrypt PowerShell z wiersza poleceń za pomocą lokalizacji PowerShell
jeśli nie możesz lub nie chcesz uruchamiać skryptów za pomocą konsoli PowerShell, możesz to zrobić również za pomocą starego dobrego wiersza poleceń (wiersz poleceń).
aby uruchomić skrypty za pomocą wiersza polecenia, musisz najpierw uruchomić plik wykonywalny PowerShell (powershell.exe), z lokalizacją PowerShell C:\Program Files\WindowsPowerShell\powershell.exe
, a następnie przekazać ścieżkę skryptu jako parametr do niego.
możesz uruchamiać skrypty z parametrami w dowolnym kontekście, po prostu określając je podczas uruchamiania pliku wykonywalnego PowerShell, takiego jak
powershell.exe -Parameter 'Foo' -Parameter2 'Bar'
.
po otwarciu cmd.exe, możesz wykonać skrypt PowerShell jak poniżej. Ten przykład polega na uruchomieniu silnika i przekazaniu mu ścieżki skryptu C:\Temp\GetServices.ps1.
zauważ poniżej, że poniższy przykład używa ścieżki lokalizacji PowerShell do uruchomienia skryptu. Musisz to zrobić, jeśli folder nie znajduje się gdzieś na twojej ścieżce.
CMD> C:\Program Files\WindowsPowerShell\powershell.exe "C:\Temp\GetServices.ps1"
lokalizacja PowerShell dla PowerShell 7 używa innego pliku wykonywalnego o nazwie pwsh.exe zazwyczaj znajduje się w C:\Program Files \ PowerShell\7 \ pwsh.exe.
Poniżej znajduje się przydatny film na YouTube, który obejmuje wykonywanie skryptu za pomocą pliku wsadowego, który cmd.exe wykonuje.
Korzystanie z PowerShell ISE
jeśli tworzysz własne skrypty lub edytujesz inne, prawdopodobnie używasz edytora skryptów, takiego jak PowerShell ISE lub kod Visual Studio (VS). Ponieważ ISE pochodzi z systemem Windows, skupmy się na tej metodzie w tym samouczku.
aby wywołać skrypt przez ISE:
- przejdź do menu Start, Wyszukaj PowerShell ISE i otwórz go.
![wyszukaj PowerShell ISE w menu Start](https://adamtheautomator.com/wp-content/uploads/2020/12/01-PowerShellISE-1.png)
2. Kliknij Plik → Otwórz i znajdź swój skrypt .
![Otwórz skrypt za pomocą menu Plik](https://adamtheautomator.com/wp-content/uploads/2020/12/02-OpenISE.png)
3. Po otwarciu skryptu kliknij zielony przycisk Uruchom, aby wykonać skrypt. Ten przycisk wywoła skrypt we wbudowanym terminalu PowerShell u dołu.
![Uruchom skrypt za pomocą PowerShell ISE](https://adamtheautomator.com/wp-content/uploads/2020/12/03-RunISE.png)
przykładowe dane wyjściowe skryptu
skrypt PowerShell może czasami zwracać dane wyjściowe. Dzieje się tak, gdy skrypt, który wykonujesz, jest zbudowany tak, aby zwracać obiekty, które są podstawowym składnikiem PowerShell.
jeśli uruchomisz przykładowy skrypt GetServices.ps1, zobaczysz następujące informacje. Ten skrypt uruchamia polecenie polecenia Get-Service
, które zwraca wszystkie usługi zainstalowane na lokalnym komputerze z systemem Windows.
PS> .\GetScripts.ps1Listing Computer ServicesStatus Name DisplayName------ ---- -----------Running aakore Acronis Agent Core ServiceStopped AarSvc_1b668d Agent Activation Runtime_1b668dRunning AcronisActivePr... Acronis Active Protection ServiceRunning AcronisCyberPro... Acronis Cyber Protection ServiceRunning AcrSch2Svc Acronis Scheduler2 ServiceRunning AdobeARMservice Adobe Acrobat Update ServiceRunning AdobeUpdateService AdobeUpdateServiceRunning AGMService Adobe Genuine Monitor ServiceRunning AGSService Adobe Genuine Software Integrity Se...----Truncated----
uruchamianie skryptu PowerShell z poziomu skryptu
powiedzmy, że masz dwa skrypty i chcesz, aby jeden wywołał drugi. Być może masz skrypt o nazwie GetUser. ps1 i jeden o nazwie ResetPassword. ps1. wewnątrz skryptu GetUser. ps1, chcesz wykonać ResetPassword. ps1, aby zresetować hasło użytkownika.
wewnątrz skryptu wywołującego (GetUser. ps1), dodałbyś linię do wykonania drugiego skryptu, tak jak wywołałbyś skrypt z wiersza poleceń.
poniżej masz kilka opcji. Zazwyczaj należy wybrać uruchamianie innego skryptu w ramach tej samej sesji lub zakresu w celu uproszczenia rzeczy, chyba że masz konkretny powód, aby uruchomić skrypt w innej sesji PowerShell.
## To run the other script in a new sessionpowershell.exe .\ResetPassword.ps1## To run the other script in the same session.\ResetPassword.ps1