Geek Škola Saznajte kako automatizirati Windows s PowerShell
U ovom izdanju Geek škole, pomoći ćemo vam da shvatite moćni PowerShell skriptni jezik koji je ugrađen u Windows i iznimno je korisno znati u IT okruženju.
Iako ova serija nije strukturirana oko ispita, učenje PowerShell je jedna od najvažnijih stvari koju možete učiniti kao mrežni administrator, tako da ako postoji jedna stvar koju želite naučiti pomoći IT karijeri, to je to. Osim toga, zabavno je.
Uvod
PowerShell je najmoćniji alat za automatizaciju koji Microsoft ima za ponuditi, i to je i ljuska i skriptni jezik.
Imajte na umu da se ova serija temelji na PowerShell 3, koji se isporučuje sa sustavima Windows 8 i Server 2012. Ako koristite sustav Windows 7, preuzmite ažuriranje PowerShell 3 prije nastavka.
Upoznajte konzolu i ISE
Postoje dva načina interakcije s PowerShellom iz kutije, konzole i integriranog okruženja skriptiranja - također poznatog kao ISE. ISE se znatno poboljšao u odnosu na odvratnu verziju koja je isporučena s PowerShellom 2 i može se otvoriti pritiskom na kombinaciju tipkovnice Win + R da bi se otvorio okvir za pokretanje, a zatim upisati powershell_ise i pritisnuti enter.
Kao što možete vidjeti ISE sportski split pogled, tako da možete brzo skriptu, a još uvijek u mogućnosti vidjeti rezultat u donjoj polovici ISE. Donja polovica ISE-a, gdje se ispisuju rezultati vaše skripte, također se može koristiti kao REPL prompt - slično kao naredbeni redak. V3 ISE konačno je dodao podršku za intellisense u oknu skripte kao i interaktivnoj konzoli.
Alternativno, možete koristiti PowerShell pomoću PowerShell konzole, a to je ono što ću koristiti za većinu ovih serija. PowerShell konzola ponaša se poput naredbenog retka - jednostavno unosite naredbe i izbacujete rezultate. Da biste otvorili konzolu Windows PowerShell, ponovno pritisnite kombinaciju tipkovnice Win + R da biste otvorili okvir za pokretanje i upišite powershell, a zatim pritisnite enter.
REPL upute kao što je ovaj su strašan za instant zadovoljenje: unesete naredbu i dobivate rezultate. Iako konzola ne nudi intelisense, ona nudi nešto što se naziva dovršavanje tabulatora koje funkcionira na isti način - jednostavno počnite tipkati naredbu i pritisnite tab za pregledavanje mogućih podudaranja.
Korištenje sustava pomoći
U prethodnim verzijama programa PowerShell datoteke za pomoć bile su uključene kada ste instalirali Windows. To je u velikoj mjeri bilo dobro rješenje, ali nas je ostavio značajan problem. Kada je PowerShell tim za pomoć morao prestati raditi na datotekama pomoći, programeri PowerShell-a su još uvijek bili zauzeti kodiranjem i pravljenjem promjena. To je značilo da kada se PowerShell dostavi, datoteke pomoći su netočne jer nisu sadržavale novije izmjene koje su napravljene u kodu. Kako bi riješio taj problem, PowerShell 3 dolazi bez datoteka pomoći iz kutije i uključuje sustav pomoći za ažuriranje. To znači da prije nego što učinite bilo što želite preuzeti najnovije datoteke pomoći. To možete učiniti otvaranjem PowerShell konzole i pokretanjem:
Update-pomoć
Čestitamo na pokretanju vaše prve naredbe PowerShell! Istina je da naredba Update-Help ima mnogo više mogućnosti nego da je jednostavno pokrene, a da bismo ih vidjeli, želimo vidjeti pomoć za naredbu. Da biste pogledali pomoć za naredbu, jednostavno proslijedite naziv naredbe kojoj želite pomoći u parametru Ime naredbe Get-Help, na primjer:
Get-Help -Name Update-Help
Vjerojatno se pitate kako svejedno protumačiti sve te tekstove, mislim zašto postoje dva puno informacija u odjeljku sintakse i zašto je toliko zagrada na cijelom mjestu? Prvo stvari: razlog postoje dva bloka informacija u odjeljku sintakse jer predstavljaju različite načine za pokretanje naredbe. To su tehnički nazvani skupovi parametara i možete ih koristiti samo jedan po jedan (ne možete miješati parametre iz različitih skupova). Na slici iznad možete vidjeti da gornji skup parametara ima SourcePath parametar dok donji ne. Razlog je taj što biste koristili najviši skup parametara (onaj koji uključuje SourcePath) ako ste ažurirali datoteke pomoći s drugog računala na mreži koje ste ih već preuzeli, a ne biste trebali navesti izvorni put ako samo sam htio preuzeti najnovije Microsoftove datoteke.
Da biste odgovorili na drugo pitanje, postoji određena sintaksa koju slijede datoteke za pomoć, a ovdje je:
- Kvadratne zagrade oko naziva parametra i njegova vrsta znači da je to neobvezni parametar i naredba će dobro funkcionirati bez nje.
- Kvadratne zagrade oko naziva parametara znače da su parametri pozicijski parametar.
- Stvar desno od parametra u kutnim zagradama govori vam o tipu podataka koji parametar očekuje.
Dok biste trebali naučiti čitati sintaksu datoteke pomoći, ako niste sigurni o određenom parametru, samo dodajte -Full do kraja vaše naredbe za pomoć i pomaknite se do odjeljka s parametrima, gdje će vam reći nešto više o svakom od njih parametar.
Get-Help -Name Update-Help-Full
Posljednje što trebate znati o sustavu pomoći je kako ga možete koristiti za otkrivanje naredbi, što je zapravo vrlo jednostavno. Vidite, PowerShell prihvaća zamjenske znakove gotovo bilo gdje, tako da ih možete koristiti zajedno s naredbom Get-Help kako biste lako otkrili naredbe. Na primjer, tražim naredbe koje se bave uslugama sustava Windows:
Usluga Get-Help -Name * *
Naravno, sve ove informacije možda nisu pri ruci šišmiša, ali vjerujte mi, odvojite vrijeme i naučite kako koristiti sustav pomoći. Sve to dolazi u ruci, čak i naprednim piscima koji to rade godinama.
sigurnosti
To ne bi bio ispravan uvod bez spominjanja sigurnosti. Najveća briga za PowerShell tim je da PowerShell postaje najnovija i najveća točka napada za kiddies. Stavili su nekoliko sigurnosnih mjera kako bi se uvjerili da se to ne dogodi, pa ćemo ih pogledati.
Najosnovniji oblik zaštite proizlazi iz činjenice da ekstenzija datoteke PS1 (proširenje koje se koristi za označavanje PowerShell skripte) nije registrirano s hostom PowerShell, već je zapravo registrirano s Notepadom. To znači da ako dvaput kliknete na datoteku, otvorit će se notepad umjesto da radi.
Drugo, ne možete pokrenuti skripte iz ljuske samo upisivanjem imena skripte, morate navesti punu putanju do skripte. Dakle, ako želite pokrenuti skriptu na C disku, morate upisati:
C: \ runme.ps1
Ili ako ste već u korijenu C pogona, možete koristiti sljedeće:
.\ runme.ps1
Naposljetku, PowerShell ima nešto što se zove Politike izvršavanja, što vas sprečava da pokrenete bilo koju staru skriptu. Zapravo, prema zadanim postavkama, ne možete pokrenuti nikakve skripte i trebate promijeniti svoju politiku izvođenja ako želite da im se dopusti pokretanje. Postoje 4 važna pravila izvršavanja:
- Ograničen: Ovo je zadana konfiguracija u programu PowerShell. Ova postavka znači da se skripta ne može pokrenuti bez obzira na njegov potpis. Jedina stvar koja se može pokrenuti u programu PowerShell s ovom postavkom je pojedinačna naredba.
- AllSigned: Ova postavka dopušta pokretanje skripti u programu PowerShell. Skripta mora imati povezani digitalni potpis od pouzdanog izdavača. Prije pokretanja skripti od pouzdanih izdavača pojavit će se upit.
- RemoteSigned: Ova postavka dopušta pokretanje skripti, ali zahtijeva da skripta i konfiguracijske datoteke koje su preuzete s Interneta imaju pridruženi digitalni potpis od pouzdanog izdavača. Skripte koje se pokreću s lokalnog računala ne moraju biti potpisane. Nema upita prije pokretanja skripte.
- Neograničen: Ovo omogućuje pokretanje nepotpisanih skripti, uključujući sve skripte i konfiguracijske datoteke preuzete s Interneta. To će uključivati datoteke iz programa Outlook i Messenger. Ovdje postoji rizik pokretanja skripti bez potpisa ili sigurnosti. Ponovno smo započeli s time da vi nikada ne koristite ovu postavku.
Da biste vidjeli što je postavljeno na vašu trenutnu politiku izvršavanja, otvorite konzolu PowerShell i upišite:
Get-ExecutionPolicy
Za ovaj tečaj i većinu drugih okolnosti, politika udaljenog dizajna je najbolja, pa nastavite i promijenite svoje pravilo koristeći sljedeće.
Napomena: ovo će se morati obaviti s povišene konzole PowerShell.
Set-ExecutionPolicy RemoteSigned
To je sve za ovo vrijeme, vidimo se sutra za još malo PowerShell zabave.
Odricanje od odgovornosti: Pravi izraz za naredbu PowerShell je cmdlet, a od sada ćemo koristiti ovu ispravnu terminologiju. Bilo je prikladnije nazvati ih naredbama za ovaj uvod.
Ako imate bilo kakvih pitanja, možete me tweetati @taybgibb, ili samo ostaviti komentar.