Geek School Dowiedz się, jak zautomatyzować system Windows za pomocą PowerShell
W tej edycji Szkoły Geek pomożemy Ci zrozumieć potężny język skryptowy PowerShell wbudowany bezpośrednio w system Windows i jest niezwykle przydatny do poznania w środowisku IT.
Podczas gdy ta seria nie jest zorganizowana wokół egzaminu, nauka PowerShell jest jedną z najważniejszych rzeczy, które możesz zrobić jako administrator sieci, więc jeśli jest coś, czego chcesz nauczyć się pomagać w karierze IT, to jest to. Poza tym jest dużo zabawy.
Wprowadzenie
PowerShell to najpotężniejsze narzędzie do automatyzacji, jakie ma do zaoferowania Microsoft, a także język powłoki i skryptów.
Zwróć uwagę, że ta seria jest oparta na PowerShell 3, który jest dostarczany z Windows 8 i Serwerem 2012. Jeśli używasz systemu Windows 7, pobierz aktualizację PowerShell 3 przed kontynuowaniem.
Poznaj konsolę i ISE
Istnieją dwa sposoby interakcji z PowerShell po wyjęciu z pudełka, konsola i zintegrowane środowisko skryptowe - znane również jako ISE. ISE znacznie się poprawiło dzięki ohydnej wersji dostarczanej z PowerShell 2 i można je otworzyć, naciskając kombinację klawiszy Win + R, aby wyświetlić pole uruchamiania, a następnie wpisując powershell_ise i naciskając enter.
Jak widać, ISE ma widok podzielony, dzięki czemu można szybko pisać scenki, jednocześnie będąc w stanie zobaczyć wynik w dolnej połowie ISE. Dolna połowa ISE, w której drukowane są wyniki twojego skryptu, może być również używana jako monit REPL - podobnie jak w wierszu polecenia. V3 ISE wreszcie dodał obsługę intellisense zarówno w panelu skryptów, jak i konsoli interaktywnej.
Ewentualnie możesz współpracować z PowerShell przy użyciu Konsoli PowerShell, co jest tym, czego będę używał w większości z tej serii. Konsola programu PowerShell zachowuje się podobnie do wiersza polecenia - po prostu wprowadza się polecenia i wypluwa wyniki. Aby otworzyć konsolę Windows PowerShell, ponownie naciśnij kombinację klawiszy Win + R, aby otworzyć pole uruchamiania i wpisz polecenie powershell, a następnie naciśnij klawisz Enter.
Komunikaty REPL, takie jak te, są niesamowite do natychmiastowej satysfakcji: wprowadzasz polecenie i dostajesz wyniki. Konsola nie oferuje intellisense, ale oferuje coś, co nazywa się uzupełnianiem kart, które działa tak samo - po prostu zacznij wpisywać polecenia i naciskaj tabulator, aby przełączać się między możliwymi dopasowaniami.
Korzystanie z systemu pomocy
W poprzednich wersjach programu PowerShell pliki pomocy były dołączane podczas instalowania systemu Windows. To było dobre rozwiązanie, ale pozostawiło nam znaczący problem. Kiedy zespół pomocy PowerShell musiał przestać pracować nad plikami pomocy, programiści PowerShell wciąż byli zajęci kodowaniem i wprowadzaniem zmian. Oznaczało to, że po wysłaniu PowerShell pliki pomocy były niepoprawne, ponieważ nie zawierały nowszych zmian wprowadzonych w kodzie. Aby rozwiązać ten problem, program PowerShell 3 nie zawiera plików pomocy i zawiera aktualizowalny system pomocy. Oznacza to, że zanim zrobisz cokolwiek, będziesz chciał pobrać najnowsze pliki pomocy. Możesz to zrobić, otwierając konsolę PowerShell i uruchamiając:
Aktualizacja-Pomoc
Gratuluję uruchomienia pierwszego polecenia PowerShell! Prawda jest taka, że polecenie Update-Help ma o wiele więcej opcji niż po prostu uruchomienie go, a aby je zobaczyć, będziemy chcieli zobaczyć pomoc dla polecenia. Aby wyświetlić pomoc dotyczącą polecenia, wystarczy przekazać nazwę polecenia, które ma pomóc, do parametru Name polecenia Get-Help, na przykład:
Get-Help -Name Update-Help
Prawdopodobnie zastanawiasz się, jak interpretować cały ten tekst w każdym razie, mam na myśli, dlaczego są dwie partie informacji pod sekcją składni i dlaczego jest tak wiele nawiasów w całym miejscu? Po pierwsze: powodem są dwa bloki informacji w sekcji składni, ponieważ reprezentują one różne sposoby uruchamiania polecenia. Są to technicznie zwane zestawy parametrów i można ich używać tylko na raz (nie można mieszać parametrów z różnych zestawów). Na powyższym zrzucie ekranu widać, że najwyższy zestaw parametrów ma parametr SourcePath, a na dole nie. Powodem jest to, że używałbyś najwyższego zestawu parametrów (takiego, który zawiera SourcePath), gdybyś aktualizował pliki pomocy z innego komputera w sieci, który już je pobrał, podczas gdy nie musiałbyś określać ścieżki źródłowej, jeśli chciałem tylko pobrać najnowsze pliki od Microsoftu.
Aby odpowiedzieć na drugie pytanie, istnieje pewna składnia, za którą odpowiadają pliki pomocy, a oto ona:
- Nawiasy kwadratowe wokół nazwy parametru i jego typu oznaczają, że jest to opcjonalny parametr, a polecenie działa bez niego.
- Nawiasy kwadratowe wokół nazwy parametrów oznaczają, że parametry są parametrem pozycyjnym.
- Obiekt po prawej stronie parametru w nawiasach kątowych informuje o typie danych oczekiwanym parametrze.
Chociaż powinieneś nauczyć się czytać składnię pliku pomocy, jeśli nie masz pewności co do konkretnego parametru, po prostu dopisz - Pełny na końcu polecenia get help i przewiń w dół do sekcji parametrów, gdzie dowiesz się więcej o każdym z nich parametr.
Get-Help -Name Update-Help -Full
Ostatnią rzeczą, którą powinieneś wiedzieć o systemie pomocy, jest to, jak możesz go użyć do odkrywania poleceń, co w rzeczywistości jest bardzo łatwe. PowerShell akceptuje symbole wieloznaczne niemal wszędzie, więc ich użycie wraz z poleceniem Get-Help pozwala łatwo odkrywać polecenia. Na przykład szukam poleceń, które dotyczą usług Windows:
Uzyskaj pomoc -Nazwa * usługa *
Oczywiście, wszystkie te informacje mogą nie być przydatne dla nietoperza, ale zaufaj mi, poświęć czas i naucz się korzystać z systemu pomocy. Przydaje się cały czas, nawet zaawansowanym skryptom, którzy robią to od lat.
Bezpieczeństwo
Nie byłoby to właściwe wprowadzenie bez wspominania o bezpieczeństwie. Największym zmartwieniem zespołu PowerShell jest to, że PowerShell staje się najnowszym i największym punktem ataku dla dzieci-skryptów. Wprowadzili kilka środków bezpieczeństwa, aby upewnić się, że tak się nie stanie, więc spójrzmy na nie.
Najbardziej podstawową formą ochrony jest fakt, że rozszerzenie pliku PS1 (rozszerzenie używane do oznaczenia skryptu PowerShell) nie jest zarejestrowane na hoście PowerShell, którego faktycznie zarejestrowano w Notatniku. Oznacza to, że dwukrotne kliknięcie pliku otworzy się za pomocą notatnika zamiast działać.
Po drugie, nie możesz uruchamiać skryptów z powłoki po prostu wpisując nazwę skryptu, musisz podać pełną ścieżkę do skryptu. Jeśli więc chcesz uruchomić skrypt na dysku C, musisz wpisać:
C: \ runme.ps1
Lub jeśli jesteś już w katalogu głównym dysku C, możesz użyć:
.\ runme.ps1
W końcu PowerShell ma coś, co nazywa się zasadami wykonywania, co powstrzymuje cię przed uruchomieniem jakiegokolwiek starego skryptu. W rzeczywistości domyślnie nie można uruchamiać żadnych skryptów i trzeba zmienić zasady wykonywania, jeśli chcesz mieć możliwość uruchamiania ich. Istnieją 4 ważne zasady realizacji:
- Ograniczony: Jest to domyślna konfiguracja w PowerShell. To ustawienie oznacza, że żaden skrypt nie może działać, niezależnie od jego podpisu. Jedyną rzeczą, którą można uruchomić w PowerShellu za pomocą tego ustawienia, jest indywidualne polecenie.
- AllSigned: To ustawienie umożliwia uruchamianie skryptów w PowerShell. Skrypt musi mieć powiązany podpis cyfrowy od zaufanego wydawcy. Przed uruchomieniem skryptów od zaufanych wydawców pojawi się monit.
- RemoteSigned: To ustawienie umożliwia uruchamianie skryptów, ale wymaga, aby skrypt i pliki konfiguracyjne pobrane z Internetu miały powiązany podpis cyfrowy od zaufanego wydawcy. Skrypty uruchamiane z komputera lokalnego nie muszą być podpisywane. Przed uruchomieniem skryptu nie ma monitów.
- Nieograniczony: Pozwala to na uruchamianie niepodpisanych skryptów, w tym wszystkich skryptów i plików konfiguracyjnych pobranych z Internetu. Dotyczy to plików z Outlooka i Messengera. Ryzyko polega tutaj na uruchamianiu skryptów bez podpisu i bezpieczeństwa. Ponownie rozpoczęliśmy, że nigdy nie używałeś tego ustawienia.
Aby sprawdzić, jaka jest aktualna polityka wykonywania, otwórz konsolę PowerShell i wpisz:
Get-ExecutionPolicy
W przypadku tego kursu i większości innych okoliczności, Polityka Wyrejestrowania jest najlepsza, więc śmiało zmieniaj zasady, korzystając z następujących zasad.
Uwaga: Należy to zrobić z podwyższonej konsoli PowerShell.
Set-ExecutionPolicy RemoteSigned
To wszystko na ten czas, ludzie, do zobaczenia jutro po więcej zabawy z PowerShell.
Zastrzeżenie: Właściwym terminem dla polecenia PowerShell jest cmdlet i od teraz będziemy używać tej właściwej terminologii. Po prostu lepiej było nazwać je poleceniami do tego wprowadzenia.
Jeśli masz jakieś pytania, możesz tweetować mnie @taybgibb, lub po prostu zostawić komentarz.