15Jul

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

U ovom izdanju Geek škole pomažemo vam razumjeti snažan PowerShell skriptni jezik koji je izgrađen upravo u Windows i izuzetno 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 nudi, 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, konzole i integriranog okruženja skriptiranja - također poznat 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 upišite powershell_ise i pritisnite enter.

instagram story viewer

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 upiti poput ovog su strašni 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.

Korištenje sustava pomoći

U prošlim verzijama programa 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 sadrži 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-Help

Č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 Get-Help naredbe, na primjer:

Get-Help - Novo ažuriranje - pomoć

Vjerojatno se pitate kako ćete interpretiratisvejedno taj tekst, mislim zašto postoje dvije puno informacija ispod sekcije sintakse i zašto postoji 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 stesamo su htjeli uhvatiti najnovije datoteke iz Microsofta.

Da bismo odgovorili na drugo pitanje, postoji određena sintaksa koja će pratiti 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.
  • Trgu zaglavlja oko imena parametara znači da su parametri pozicionirani parametri.
  • Stvar s desne strane parametra u uglatim zagradama navodi vrstu podataka koju očekuje parametar.

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 osvaki parametar.

Get-Help -Name Update-Help-full

Posljednja stvar koju 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 *

Naravno, sve ove informacije možda neće biti korisne za šišmiš, ali vjerujte mi, odvojite vrijeme i saznajte kako koristitisustav pomoći. Uvijek dolazi u uporabu, čak i do naprednih scenarija koji to već godinama rade.

Sigurnost

To ne bi bio pravi uvod bez spominjanja sigurnosti. 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, koji je zapravo registriran s Notepadom. 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 skripte imena, morate odrediti puni 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čajna pravila za izvršenje:

  • Ograničeno : Ovo je zadana konfiguracija u PowerShellu. 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 omogućava 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 koje se preuzmu s Interneta imaju pridruženi digitalni potpis izdavača s povjerenjem. Skripte pokrenute s lokalnog računala ne moraju biti potpisane. Prije pokretanja skripte nema nikakvih upita.
  • Neograničeno : 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 koja je vaša trenutačna pravila izvršenja postavljena, 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 PowerShell naredbu je cmdlet, a od sada ćemo koristiti to ispravno terminologije. Jednostavno se osjećao prikladnijim da ih zovu naredbama za ovaj uvod.

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