If-Koubou

Geek School: Saznajte kako automatizirati sustav Windows pomoću programa PowerShell

Geek School: Saznajte kako automatizirati sustav Windows pomoću programa PowerShell (Kako da)

U ovom izdanju Geek škole pomažemo vam razumjeti snažan PowerShell skriptni jezik koji je izgrađen upravo u Windows i iznimno je koristan za IT okruženje.

Iako ova serija nije strukturirana oko ispita, učenje PowerShell je jedna od najvažnijih stvari koje možete učiniti kao mrežni administrator, pa ako postoji jedna stvar koju želite naučiti kako bi pomogla IT karijeri, to je to. Osim toga, zabavno je.

Uvod

PowerShell je najmoćniji alat za automatizaciju koji Microsoft ima za ponuditi, a to je i ljuska i skriptni jezik.

Imajte na umu da se ova serija temelji na PowerShell 3, koji se isporučuje s Windows 8 i Server 2012. Ako koristite Windows 7, prije nastavka preuzmite ažuriranje programa PowerShell 3.

Upoznajte konzolu i ISE

Postoje dva načina interakcije s PowerShellom izvan okvira, Konzola i Integriranog okruženja skriptiranja - također poznatog kao ISE. ISE je znatno poboljšana od zastrašujuće verzije koja se isporučuje s PowerShell 2 i može se otvoriti pritiskom na kombinaciju Tipkovnica Win + R kako biste pokrenuli okvir za pokretanje, a zatim tipkali powerhell_ise i pritisnite enter.

Kao što možete vidjeti ISE sportski split pogled tako da možete brzo skriptu dok još uvijek možete vidjeti rezultat u donjoj polovici ISE. Donja polovica ISE-a, gdje se rezultati vaše skripte tiskaju, mogu se koristiti i kao REPL prompt - slično nalik naredbenom retku. V3 ISE konačno je dodao podršku za intellisense u oba skripta, kao i na interaktivnoj konzoli.

Alternativno, možete komunicirati s PowerShellom pomoću PowerShell Console, što ću koristiti za većinu serije. PowerShell konzola ponaša se slično naredbenom retku - jednostavno unesite naredbe i ispisuje rezultate. Da biste otvorili konzolu sustava Windows PowerShell, ponovo pritisnite kombinaciju tipkovnice Win + R da biste otvorili okvir za pokretanje i unesite powerhell pa pritisnite tipku enter.

REPL-ovi kao što su to strašni su za trenutačnu zahvalnost: unosite naredbu i dobivate rezultate. Iako konzola ne nudi intellisense, nudi nešto što se zove ispunjavanje kartica, što funkcionira mnogo istim - jednostavno počnite upisivati ​​naredbu i pritisnite karticu da biste kružili kroz moguće podudaranje.

Upotreba sustava pomoći

U prethodnim verzijama sustava PowerShell, datoteke pomoći bile su uključene kada ste instalirali sustav Windows. Ovo je uglavnom bilo dobro rješenje, no ostavilo nas je s velikim problemom. Kada je pomoćni tim za PowerShell morao prestati raditi na datotekama pomoći, razvojni programeri programa PowerShell još su bili zauzeti kodiranje i promjene. To je značilo da kada se PowerShell isporučio, datoteke za pomoć nisu bile točne jer nisu sadržavale nove izmjene koje su izvršene u kodu. Da biste riješili taj problem, PowerShell 3 dolazi bez ikakvih datoteka za pomoć iz kutije i uključuje sustav za ažuriranje sustava. To znači da prije nego što učinite bilo što želite preuzeti najnovije datoteke pomoći. To možete učiniti tako da otvorite PowerShell konzolu i pokrenete:

Update-pomoć

Čestitamo na izvođenju vaše prve PowerShell naredbe! Istina je da naredba Update-Help ima puno više opcija nego jednostavno pokrenuti, i da biste ih vidjeli, htjeli bismo vidjeti pomoć za naredbu. Da biste pogledali pomoć za naredbu, jednostavno unesite naziv naredbe za koju želite pomoć s parametrom Naziv u naredbi Get-Help, na primjer:

Get-Help -Name Update-Pomoć

Vjerojatno se pitate kako svejedno tumačiti sav taj tekst, mislim zašto postoje dvije puno informacija u sekciji sintakse i zašto postoje toliko zagrada na cijelom mjestu? Prvo: prvo: razlog zbog kojeg postoje dva bloka informacija u sekciji sintakse je jer predstavljaju različite načine za pokretanje naredbe. To su tehnički nazivi skupova parametara i možete ih koristiti samo jedan po jedan (ne možete miješati parametre iz različitih skupova). Na gornjoj snimci zaslona možete vidjeti da najviši skup parametara ima SourcePath parametar dok dno ne. Razlog tomu je da koristite najviši skup parametara (onaj koji uključuje SourcePath) ako ažurirate datoteke pomoći s drugog računala na mreži koja ih je već preuzela, a ne biste trebali navesti putanju izvora ako ste samo su htjeli uhvatiti najnovije datoteke iz Microsofta.

Da biste odgovorili na drugo pitanje, postoji određena sintaksa koja prati datoteke i ovdje je:

  • Kvadratne zagrade oko naziva parametara i njenog tipa znači da je to izborni parametar, a naredba će funkcionirati sasvim bez nje.
  • Kvadratne zagrade oko imena parametara znači da su parametri pozicijski parametri.
  • Stvar s desne strane parametra u uglatim zagradama navodi vrstu podataka koju parametar očekuje.

Dok biste trebali naučiti pročitati sintaksu datoteke pomoći, ako niste sigurni o određenom parametru, jednostavno dodajte -Točno do kraja naredbe za dobivanje pomoći i pomaknite se do odjeljka o parametrima, gdje će vam reći nešto više o svakoj parametar.

Get-Help - ažuriranje-pomoć - puna

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 koristite zajedno s Get-Help naredbom omogućuje vam jednostavno pronalaženje naredbi. Na primjer, tražim naredbe koje se bave servisima sustava Windows:

Get-Help -Name * usluga *

Svakako, sve ove informacije možda neće biti prikladne za šišmiš, ali vjerujte mi, uzmite vremena i naučite kako koristiti sustav pomoći. Uvijek dolazi u uporabu, čak i do naprednih scenarija koji to već godinama rade.

sigurnosti

Ovo ne bi bio pravi uvod, a da ne spominjemo sigurnost.Najveća zabrinutost za PowerShell tim je da PowerShell postaje najnovija i najveća točka napada za skripte kiddies. Stavili su nekoliko sigurnosnih mjera kako bi bili sigurni da se to ne dogodi, pa ih pogledajmo.

Najosnovniji oblik zaštite dolazi od činjenice da se proširenje PS1 datoteke (proširenje koje se koristi za označavanje PowerShell skripte) nije registrirano kod host PowerShell, a zapravo je registriran u Notepadu. To znači da dvostrukim klikom na datoteku otvorit će se s notepad umjesto trčanje.

Drugo, ne možete pokrenuti skripte iz ljuske samo upisivanjem naziva skripte, morate odrediti cijeli put do skripte. Dakle, ako želite pokrenuti skriptu na vašem C pogonu, morat ćete upisati:

C: \ runme.ps1

Ili ako ste već u korijenu C pogona, možete koristiti sljedeće:

. \ Runme.ps1

Konačno, PowerShell ima nešto što se naziva Izvršnim pravilima, koje vas spriječavaju da pokrenete bilo koju staru skriptu. Zapravo, prema zadanim postavkama, ne možete pokrenuti nijednu skriptu i trebate promijeniti pravila o izvršenju ako ih želite dopustiti. Postoje 4 značajne provedbene politike:

  • Ograničen: Ovo je zadana konfiguracija u sustavu PowerShell. Ova postavka znači da se nijedna skripta ne može pokrenuti, bez obzira na njegov potpis. Jedina stvar koja se može pokrenuti u PowerShell s ovom postavkom je individualna naredba.
  • AllSigned: Ova postavka dopušta pokretanje skripti u programu PowerShell. Skripta mora imati pridruženi digitalni potpis pouzdanog izdavača. Bit će vam upit prije nego što pokrenete skripte od pouzdanih izdavača.
  • RemoteSigned: Ova postavka omogućuje pokretanje skripti, ali zahtijeva da skript i konfiguracijske datoteke preuzete s interneta imaju pridruženi digitalni potpis izdavača pouzdanih. Skripte pokrenute s lokalnog računala ne moraju biti potpisane. Prije pokretanja skripte nema nikakvih upita.
  • Neograničen: To 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. Rizik je ovdje pokretanje skripti bez potpisa ili sigurnosti. Ponovno smo rekli da nam nikada niste postavili ovu postavku.

Da biste vidjeli vaša trenutna pravila izvršenja, otvorite PowerShell konzolu i upišite:

Get-ExecutionPolicy

Za ovaj tečaj i većinu drugih okolnosti, RemoteSigned pravila su najbolja pa idite naprijed i promijenite pravila pomoću sljedećeg.

Napomena: To će se trebati obaviti s povišene konzole PowerShell.

Set-ExecutionPolicy RemoteSigned

To je sve za ovo vrijeme ljudi, vidimo se sutra za još neke PowerShell zabave.

Odricanje od odgovornosti: Odgovarajući pojam za naredbu PowerShell je cmdlet, a od sada ćemo koristiti ovu ispravnu terminologiju. Jednostavno se osjećao prikladnijim da ih zovu naredbama za ovaj uvod.

Ako imate bilo kakvih pitanja, možete me tweetirati @taybgibb, ili jednostavno ostaviti komentar.