Šta to znači u powershell-u. Svrha komponente Windows Power Shell

Značajan dio zadataka vezanih za održavanje lokalnih računarskih mreža uključuje izvođenje rutinskih operacija, čija ručna implementacija može zahtijevati dosta vremena. Vjerovatno su rješenja za automatizaciju administrativnih zadataka koja bi mogla poboljšati produktivnost nastala gotovo odmah s pojavom profesije sistem administratora.

Najčešći način „uštede vremena i oslobađanja od glavobolje“ postalo je snimanje i sekvencijalno grupno izvršavanje potrebnih operacija – izvršavanje skripti ili skripti u interpretatoru komandi operativnog sistema.

Pokušaji poboljšanja stanja u oblasti upravljanja i administracije Windows-a korištenjem komandnog sučelja nisu doveli do prilagođavanja skriptnog jezika stranog sistemu ili stvaranja super-uslužnog programa koji radi u DOS-u, već do pojave PowerShell– nova komandna ljuska.

Kao dio MS-DOS-a i Windows 9x, takav interpreter koji omogućava obradu batch fajlova (bat-fajlova) je bio command.com, naknadno (od izdavanja Windows NT) zamijenjen cmd.exe. Kasnije se pojavio Windows Script Host.

Windows Script Host(WSH; izvorno nazvan Windows Scripting Host) - jedan od elemenata Microsoft Windowsa, počeo je da se isporučuje kao dio operativnog sistema počevši od Windows 98. Omogućava vam da pokrenete skripte napisane korištenjem skriptnih jezika VBScript/JScript i, kao dodatak, neke druge. Skripte koje se izvršavaju u WSH-u pružaju mnogo više funkcionalnosti nego korištenje komandnih (bat- i cmd-) datoteka. Izvršenje je moguće u grafičkom okruženju (wscript.exe) ili u konzoli (cscript.exe).

Međutim, proces pisanja i izvršavanja skripti u Windows OS nije toliko razvijen kao, na primjer, u UNIX sistemima. Jedan od razloga za to je grafičko sučelje samog Windows OS-a, koje ga je očigledno učinilo toliko popularnim među običnim, ne-korporativnim korisnicima. Mogućnost kontrole nekih elemenata Windows okruženja pomoću grafičkog interfejsa ne može se uvijek postići korištenjem sistemskih uslužnih programa koji se izvršavaju na komandnoj liniji. S druge strane, mogućnosti nekih sistemskih programa koji se isporučuju sa Windowsom nisu uvijek predstavljene u GUI. Osim toga, tumači u Windows-u imaju prilično ograničen skup naredbi „žičano“ uvezanih u samu ljusku. Windows Script Host nije integrisan sa komandnom linijom i sam po sebi predstavlja potencijalnu opasnost - koristi ga prilično veliki broj malvera.

Pokušaji poboljšanja stanja u oblasti upravljanja i administracije Windows-a korištenjem komandnog sučelja nisu doveli do prilagođavanja skriptnog jezika stranog sistemu ili stvaranja super-uslužnog programa koji radi u DOS-u, već do pojave Windows PowerShell– nova komandna ljuska. Prema nekim izvještajima, njegov izgled je povezan s korištenjem .NET platforme prilikom kreiranja komandnog interfejsa za WMI. PowerShell je trenutno samostalna aplikacija koja se može instalirati na bilo koji sistem koji koristi platformu .Net 2.0(Windows XP, Vista, Server 2003). Počevši od Servera 2008, PowerShell će biti ugrađena komponenta Windows sistema. Ako nemate Server 2008, moraćete prvo da ga preuzmete da biste započeli sa PowerShell-om (možda ćete takođe morati da instalirate .NET).

Poznanstvo
Kada pokrenete PowerShell, u početku nećete primijetiti nikakve razlike između njega i cmd.exe (osim što je zadana boja pozadine PowerShell prozora plava). Štaviše, uskoro ćete otkriti da su operacije kopiranja/paste u PowerShell implementirane jednako loše kao cmd.exe. Ali prvi utisak o sličnosti ovih školjki, recimo, ne odgovara u potpunosti stvarnosti.

Činjenica da je PowerShell baziran na .NET Frameworku je njegova glavna razlika u odnosu na prethodne Windows komandne ljuske. PowerShell je potpuno objektno orijentisan. Rezultat pokretanja naredbe u PowerShell-u nije neki “sam tekst,” već objekt .NET platforme. Ovaj objekat predstavlja same podatke i ima skup svojstava i metoda inherentnih njemu.

Pozivaju se interne komande (tačnije, komandne strukture) za rad sa objektima u PowerShell-u cmdlete. Za njih je izmišljeno posebno uniformno ime u obliku kombinacije akcije i cilja. Na primjer, akcija “set” se koristi za primanje podataka, “get” za primanje, “out” za izlaz, itd. Cilj je tip objekta na koji će se akcija primijeniti. Cmdlete se mogu smatrati mini-programima koji se pokreću u PowerShell-u. Da biste povećali funkcionalnost, možete kreirati vlastite cmdlete ili instalirati cmdlete treće strane. Osim cmdlet-a, PowerShell vam omogućava pokretanje funkcija, eksternih skripti (pohranjenih u datotekama s ekstenzijom ps1) i eksternih izvršnih datoteka.

PowerShell uključuje prilično opsežan sistem pomoći. Da biste započeli s tim, možete pokrenuti naredbu Get-Help.

Da biste dobili detaljnu pomoć za cmdlet ili odjeljak osnovnih informacija, morate navesti njegovo ime kao parametar komande.

Opcije
Strogo govoreći, u duhu dosljednog imenovanja u PowerShell-u, sva imena parametara proslijeđena cmdlet-u moraju biti praćena znakom "-". Međutim, radi lakšeg pisanja, nazivi nekih parametara mogu biti izostavljeni. Na primjer, za pristup pomoći za Get-Content cmdlet umjesto navođenja punog

PowerShell:

Get-Help –ime Get-Content

možete unijeti naredbu

PowerShell:

Get-Help Get-Content

Parametar može imati bilo koju vrijednost (u upravo datom primjeru, vrijednost parametra imena je bila Get-Content) ili ne mora imati nikakvu vrijednost. U ovom slučaju, analogno je prekidaču za neku funkcionalnost naredbe. Na primjer, ako želite dobiti potpune informacije o Get-Content cmdletu, unesite

PowerShell:

Get-Help Get-Content –Detailed

Transporter
PowerShell implementira mehanizam za prijenos podataka iz jednog procesa u drugi ili njihov izlaz u datoteku. Budući da, kao što je gore navedeno, PowerShell ne radi sa tekstom, već sa objektima, prilikom preusmjeravanja element razmjene informacija je objekt, zajedno sa njegovom strukturom. Ova funkcija vam omogućava da radite sa objektima - birate ih prema datom filteru, sortirate, grupišete, itd. Za organizaciju takvog transportera (u dokumentaciji na engleski termin koji se koristi cjevovod- cjevovod ili kanal) u tekstu skripte koristi se znak vertikalne trake. Kada se naiđe na takav znak, interpreter prosljeđuje objekte iz jednog cmdleta u drugi kao ulazne parametre.

Kao primjer cjevovoda i mogućnosti pristupa svojstvima objekata koji se prenose duž njega, dajemo sljedeću situaciju. Da bismo proverili da li se na računaru pokreću neki sumnjivi programi, želimo da dobijemo listu svih pokrenutih procesa, da dobijemo putanje i nazive fajlova koji ih pokreću, kao i da pogledamo datum kreiranja takvih datoteka. Osim toga, mi ćemo sortirati takvu listu prema datumu kreiranja u opadajućem redoslijedu i odabrati 10 "najskorijih" od njih. Dodajmo i vrijeme posljednje izmjene datoteke izlaznim informacijama. Procese sa nazivima "System" i "Idle" isključit ćemo iz razmatranja, jer ne sadrže putanje do datoteka.

Kako kažu, dobro formulirano pitanje je već pola rješenja. pogledajte:
Kada unosite kod, uvijek možete prekinuti red tako što ćete staviti `` nakon razmaka na crtici. Možete čak i samo pritisnuti tipku Enter bez da završite red. U ovom slučaju, PowerShell će promijeniti prompt u >>, dajući korisniku do znanja da tumač smatra da je kod nepotpun i da čeka da korisnik završi s kucanjem.

Kao i mnogi drugi skript jezici, PowerShell vam omogućava da koristite varijable. Varijabla je označena znakom "$". U slučaju prijenosa objekta kroz cjevovod, varijabla $_ ukazuje na sam preneseni objekt.

Pogledajmo akcije koda "korak po korak". Prvo, dobijamo listu procesa koristeći Get-Process cmdlet. Ovi podaci se dalje prosljeđuju duž cjevovoda i filtriraju prema uvjetima navedenim u where-Object (odbacujemo procese s nazivima "System" i "Idle").

Sljedeći element cjevovoda, Get-Item, vraća atribute odabranih objekata. Ostaje samo da ih sortirate (vrijeme kreiranja u opadajućem redoslijedu) i odaberete vrijednosti koje nas zanimaju (naziv mape i izvršne datoteke, vrijeme kreiranja i posljednja modifikacija datoteke). Posljednji parametar, -first 10, specificira da će biti prikazano samo prvih 10 elemenata sa liste objekata. Pokušajmo izvršiti u Server 2008 okruženju:


Uvećaj sliku

Divno, baš ono što nam treba. Međutim, kada sam pokušao da pokrenem isti kod u Windows XP ili Server 2003, otkrio sam da tamo ne izgleda tako glatko:


Uvećaj sliku

Prilikom pregleda rezultata izvršenja

PowerShell:

Get-Process | Odaberite Put

Ispostavilo se da PowerShell tumači putanje dva procesa - winlogon i csrss - u Windows XP i Server 2003 kao \??\C:\WINDOWS\system32\. Za objašnjenje ovakvog ponašanja obratio sam se Vasiliju Gusevu, stručnjaku za PowerShell. On je objasnio da ovi procesi ne koriste Win32API, a tako različit odgovor na njih u XP/Vista sa .NET strane je vjerovatno zbog razlike u platformama ovih operativnih sistema.

Nakon što smo odlučili da korištenje mehanizama za rukovanje greškama (u smislu zaobilaženja "nejasne" putanje i suzbijanja izlaza poruke o grešci) ili izuzimanje winlogon i csrss procesa sa liste u ovom slučaju nije prikladno (možda su zaraženi, a mi više ne prikazujemo datum njihove izmjene u rezultatima ćemo vidjeti), naredbe su promijenjene na sljedeći način:

PowerShell:

Get-Process | ForEach-Object ( if ($_.Path -ne $NULL) ( Get-Item ($_.Path -replace "\\\?\?\\", "") ) ) | Sort CreationTime -desc | Odaberite FullName, Name, CreationTime, LastWriteTime -prvih 10

Čitalac može dobiti uvid u upotrebu uslova i regularnih izraza u PowerShell-u.

Mala objašnjenja koda.

  • Druga faza cjevovoda koristi ForEach-Object cmdlet za izvođenje određene operacije na svakom objektu u skupu koji je proslijeđen njegovom ulazu.
  • Kao što je gore navedeno, trenutni objekat na kojem se operacija izvodi predstavljen je promjenljivom $_.
  • Navedena operacija ovdje je uvjet forme ako ( stanje){kod koji treba izvršiti ako je uslov istinit}.
  • Baš kao u cmd.exe, operatori poređenja ne koriste znakove poput< или >, i skraćenice - u ovom slučaju "nije jednako": -ne.
  • Dakle, ako putanja procesa sadrži bilo koju vrijednost (u slučaju "System" i "Idle" jednostavno nema putanje), korištenjem funkcije zamjene svi znakovi "\??\" u stazi će biti uklonjeni (možda, detaljnije ćemo se dotaknuti pitanja regularnosti, za sada nećemo koristiti izraze)
  • a Get-Item cmdlet će omogućiti pristup svojstvima trenutnog procesa.
Pa, onda je sve isto kao u prvom primjeru. Rezultat izvršenja je sada isti:
Uvećaj sliku

Dobijanje informacija o objektima
Možda je čitalac već imao pitanje - kako, uopšteno govoreći, možete saznati koje informacije se mogu dobiti kao rezultat izvršavanja određene komande? Koje radnje se mogu izvršiti s primljenim podacima? Na primjer, u gornjem slučaju, kako bismo znali da ćemo moći dobiti datum kreiranja datoteke? Jedan jednostavan način za analizu objekta koji je vraćen naredbom je da se taj objekat prosledi kao ulaz u Get-Member cmdlet. Ovaj cmdlet prikazuje informacije o tipu objekta i svim njegovim elementima. Po pravilu, objekti imaju veliki broj različitih svojstava i rezultat Get-Member-a može biti vrlo obiman tekst koji nije baš zgodan za gledanje. U tom slučaju možete podijeliti informacije na dijelove ili ih filtrirati. Primjer dobivanja informacija o objektu koji vraća Get-Process cmdlet, a koji se može pogledati stranicu po stranicu:

PowerShell:

Get-Process | Get-Member | Out-Host-Paging

Kada je stranica puna, korisnik može izabrati jednu od opcija - prikazati drugu stranicu, prikazati još jedan red ili prestati prikazivati ​​podatke.

Filtriranje podataka se izvodi pomoću parametra MemberType, koji određuje koji tip informacija treba biti prikazan. Na primjer, naredba

PowerShell:

Get-Process | Svojstva Get-Member -MemberType

će prikazati samo svojstva objekta, i

PowerShell:

Get-Process | Get-Member -MemberType metode

Samo njegove metode. Drugi način da vidite svojstva objekta je da dodijelite objekt promjenljivoj, zatim otkucate ime varijable u konzolu, stavite tačku i pritisnete tipku Tab. Sa svakim pritiskom na tipku, PowerShell će ponoviti i zamijeniti metode i svojstva objekta. Iteracija u suprotnom smjeru je moguća pomoću kombinacije tipki Shift+Tab.

Sigurnost
Kao što je već napomenuto, upotreba VBScript/JScript skripti predstavlja potencijalnu opasnost za sistem – da biste ih izvršili, jednostavno kliknite na ikonu mišem. Opasnost je još veća ako je korisnik prijavljen sa nalogom koji je član grupe Administratori. U PowerShell-u se skripta s ekstenzijom ps1 ne može izvršiti pomoću miša - na sistemu će se takva datoteka otvoriti ne u komandnoj ljusci, već u Notepad-u. Da biste pokrenuli skriptu, potrebno je da pokrenete sam PowerShell, unesete naziv datoteke i pritisnete Enter.

U novoj ljusci zamjena komandi je također nemoguća. Suština ove tehnike koju koriste napadači je sljedeća. Tipično, korisnik koji nije administrator ima neke fascikle sa dozvolama za pisanje i izvršavanje datoteka. Tipičan primjer je folder C:\Documents and Settings\username. Zlonamjerni softver kreira izvršnu datoteku u takvoj fascikli s imenom koje odgovara imenu komande ljuske ili nazivu izvršnog sistemskog programa. Na primjer, kreirao sam ipconfig.vbs u folderu „moji“ dokumenti, koji prikazuje jednostavnu poruku. Sada, ako, nakon što sam pokrenuo cmd.exe, i bio sam u svom folderu, pokušam izvršiti naredbu Windows ipconfig, dobit ću ovaj rezultat:


Uvećaj sliku

Da biste dovršili ilustraciju, možete da stavite izvršnu datoteku u fasciklu dokumenata, preimenovanu u našem slučaju u ipconfig.exe. Zatim, čak i kada se pozove sa ekstenzijom, datoteka će biti pokrenuta iz trenutnog foldera, a ne iz \system32. Ovaj trik neće raditi sa PowerShell-om – da biste pozvali skriptu čija se putanja ne poklapa sa putanjama navedenim u sistemskoj varijabli %Path, morate eksplicitno navesti njegovu lokaciju. Čak i ako se skripta nalazi u fascikli koja je trenutna fascikla za ljusku, morate navesti putanju u sledećem obliku: .\file_name. Tačka sa obrnutom kosom crtom pokazuje tumača na trenutni folder.

Drugi sigurnosni mehanizam je politika izvršavanja skripte. U početku je ljuska konfigurisana tako da čak i ako se skripta ispravno pozove, njeno izvršavanje će biti zabranjeno, a korisnik će dobiti odgovarajuću poruku. Politika izvršavanja može se prebaciti na jedan od četiri načina:

  • Ograničeno- podrazumevana postavka, zabranjeno je pokretanje bilo kakvih skripti
  • AllSigned- dozvoljeno je pokretanje skripti koje imaju digitalni potpis od pouzdanog izdavača; Korisnički kreirane skripte također moraju biti certificirane od strane certifikacijskog tijela
  • RemoteSigned- skriptama je dozvoljeno da se izvode ako im se ne veruje, već ih je kreirao lokalni korisnik; skripte preuzete sa Interneta koje nemaju potpis neće se izvršavati
  • Neograničeno- dozvoljeno pokretanje bilo koje skripte
Trenutni način politike možete saznati pokretanjem naredbe Get-ExecutionPolicy u ljusci. Da promijenite način rada, pokrenite naredbu Set-ExecutionPolicy sa željenim imenom politike kao parametrom.
Takođe, među alate koji pomažu u poboljšanju sigurnosti pri radu sa PowerShell-om, uključio bih parametre komande iz kategorije „šta se dešava ako...“. Dva su od njih - šta ako i potvrdi. Prvi vam omogućava da odredite koja će se radnja izvršiti i s kojim objektom, ali sama radnja neće biti implementirana. Nešto kao simulacija. Drugi će od korisnika tražiti potvrdu prije izvođenja radnje, a ako je odgovor potvrdan, zapravo će pokrenuti potrebnu naredbu. Odnosno, ova vrsta osiguranja.

Navest ću možda najupečatljiviji i najzabavniji primjer korištenja ovih parametara. Ako korisnik pokuša izvršiti naredbu

PowerShell:

Get-Process | Stop-proces

onda će ga nakon nekoliko sekundi čekati plavi ekran sa STOP. PowerShell će, kako slijedi iz teksta naredbe, uzastopno početi "ubijati" sve procese koji se pokreću u sistemu, što će dovesti do njegovog kritičnog zaustavljanja. Ako trčiš

PowerShell:

Get-Process | Zaustavi proces -šta ako

ništa loše se neće dogoditi - PowerShell će jednostavno pokazati šta bi uradio da se naredba izvrši bez -whatif prekidača:


Uvećaj sliku

Nadimci
Shell ima ugrađeni mehanizam za pseudonime komandi. S jedne strane, aliasi se koriste za pojednostavljenje unosa naredbi. Obično se u ovom slučaju skraćeno ime cmdleta koristi kao pseudonim (na primjer, gc za Get-Content ili fl za Format-List). S druge strane, ovaj mehanizam osigurava kompatibilnost interfejsa različitih interpretatora komandi. Na primjer, ako imate iskustva sa cmd.exe, navikli ste da prikazujete sadržaj fascikle pomoću komande dir. Pokretanje ove naredbe u PowerShell-u će proizvesti isti rezultat, iako će ljuska zapravo pokrenuti Get-ChildItem cmdlet umjesto dir aliasa. Lista svih dostupnih alijasa može se dobiti pomoću naredbe Get-Alias. Korisnik može kreirati vlastite pseudonime koristeći naredbu Set-Alias.

PowerShell pogoni
Baš kao što se Windows bavi podacima koristeći sistem datoteka, PowerShell radi sa skladištima podataka predstavljenim kao diskovi. Fizički diskovi sistema nisu jedini tip skladišta ugrađenog u ljusku s kojim je omogućena interakcija. Korisnik može raditi s registratorom, ugrađenim varijablama i varijablama okruženja i skladištima certifikata na isti način kao i s običnim diskovima, mapama i datotekama. Implementacija ove interakcije i pružanje apstrakcija koje omogućavaju korisniku da primijeni iste komande i metode na različite skladišta podataka je završeno. provajderi- .NET programi.

Lista provajdera trenutno dostupnih ljusci može se dobiti naredbom Get-PSProvider. U početku, PowerShell sadrži sledeće "drive" - ​​pseudonime (Alias), varijable okruženja (Env), fizičke sistemske diskove (C, D, itd.), funkcije, sistemski registar, interne varijable (Variable) i skladište sertifikata.

Evo primjera čitanja sadržaja košnice registratora HKLM\Software\Microsoft


Uvećaj sliku

Kao što vidite, korišćene su iste komande kao za dobijanje informacija o sistemu datoteka. Ali struktura dobijenih podataka je prirodno drugačija. Pored naziva i svojstava, za svaki element se prikazuju broj podsekcije (SKC) i broj zapisa (VC). Koristeći PowerShell, korisnik može vidjeti informacije registra i dodavati, brisati i mijenjati ključeve. Dozvolite mi da vam dam nešto kao cheat sheet za rad sa elementima registra:


Uvećaj sliku

I kod za primjer izvođenja raznih manipulacija s ključevima registra i njihovim parametrima:

PowerShell:

# Kreirajte novi pododjeljak sa imenom valks u grani HKEY_CURRENT_USER\Software New-Item -path HKCU:\Software\valks # Dodajte novi parametar stringa u kreiranu sekciju sa imenom Param1 i vrijednošću StringValue New-ItemProperty -path HKCU :\Software\valks -name Param1 -propertyType String -value StringValue # Kreirajte pododjeljak potfascikle New-Item -path HKCU:\Software\valks\SubFolder # Dodajte još jedan parametar - Param2 tipa DWord i vrijednost 12 New-ItemProperty -path :\Software\valks -name Param2 -propertyType DWord -value 12 # Dobiti listu svih parametara Get-ItemProperty HKCU:\Software\valks # Dobiti vrijednost parametra Param2 Get-ItemProperty HKCU:\Software\valks | Format-list Param2 # Ili možemo pročitati odjeljak u varijablu $key $key = Get-ItemProperty HKCU:\Software\valks # I ispisati vrijednost željenog parametra Write-Host "Vrijednost parametra Param2: " $key .Param2 # Promijenite vrijednost parametra Param2 u 193 Set-ItemProperty HKCU:\Software\valks -name Param2 -value 193 # Promijenite ime parametra Param1 u Parameter1 Rename-ItemProperty -path HKCU:\Software\valks -name Param1 -newname Param1 # Izbriši Parametar1 Remove-ItemProperty HKCU:\Software \valks -name Parameter1 # Izbriši cijeli pododjeljak valks Remove-Item HKCU:\Software\valks

Evo još jednog malog primjera u obliku funkcije koja traži programe koji se automatski učitavaju kada se sistem pokrene. Opseg pretraživanja je definiran nizom koji uključuje neke poznate startne točke u registru. Kod sadrži komentare, nadam se da će objasniti suštinu posla.

PowerShell:

Funkcija GetAutoexec ($hives) ( # Ako funkciji nije dat ulazni niz ključeva registratora, # koristite ovo: $hives = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run", ` "HKLM:\SOFTWARE\ Microsoft\Windows\ CurrentVersion\Run", ` "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\Run" # Iznesite naslov i pomjerite red Write-Host "Startup list`n" # Počinjemo ponavljati kroz elemente niza - grane registra Foreach ($ košnica u $hives)( # Prikaži ime grane zelenom bojom Write-Host "Branch $hive" -ForegroundColor Green # Provjerite da li grana postoji u registru ako (Test-Path $hive)( # Dobiti sljedeći ključ registratora $param = Get- Item $hive # za svaki ključ... foreach ($p u $param)( # ...dobiti listu njegovih parametara foreach ($key u $ p.getvalueNames())( # prikazuje ime parametra i njegovu vrijednost "Loading $ key from " + $p.GetValue($key) ) ) ) # premotavanje Write-Host linije "`n" ) ) # poziv sama funkcija GetAutoexec

Korisnik može kreirati vlastite diskove koristeći postojeće provajdere. Evo primjera kreiranja PowerShell pogona pod nazivom Win, čiji će sadržaj biti korijenski direktorij C:\Windows:

PowerShell:

Novi-PSDrive -Naziv Win –PSProvider FileSystem -Root "C:\Windows"

Jednom kada je PowerShell pogon kreiran, možete mu pristupiti kao i običnom sistemskom pogonu.


Uvećaj sliku

Međutim, trebali biste biti svjesni da kada završite svoju PowerShell sesiju, ona će biti automatski izbrisana. Isto tako i aliasi, funkcije i varijable koje je kreirao korisnik tokom sesije. Da biste sačuvali ove promjene, morate kreirati PowerShell profil.

PowerShell profili
Profil je datoteka sa ekstenzijom ps1. U stvari, ovo je ista skripta koju izvršava ljuska kada se pokrene. Profili u ljusci se ne kreiraju automatski - mora ih kreirati sam korisnik. Kreirani profili će se učitavati svaki put kada se PowerShell pokrene ako politika izvršavanja dozvoljava učitavanje konfiguracijskih datoteka. Mogu se obraditi do četiri različita profila. Lokacija datoteka redoslijedom kojim su preuzeti:

  • %windir%\system32\WindowsPowerShell\v1.0\profile.ps1 - profil koji se odnosi na sve korisnike i ljuske
  • %windir%\system32\WindowsPowerShell\v1.0\ Microsoft.PowerShell_profile.ps1 - profil koji se odnosi samo na sve korisnike PowerShell-a
  • %UserProfile%\My Documents\WindowsPowerShell\profile.ps1 - odnosi se na trenutnog korisnika u svim ljuskama
  • %UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 - odnosi se na trenutnog korisnika samo u PowerShell-u
Pod različitim ljuskama ovdje, morate uzeti u obzir činjenicu da PowerShell možda nije jedina aplikacija koja koristi datoteke ps1 profila. Neka integrirana razvojna okruženja (IDE) također ih mogu koristiti. Jedan od tipični primjeri je PowerGUI alat koji je razvio Quest Software koji pruža GUI alat za rad sa PowerShell-om.
Putanja do profila trenutnog korisnika samo za PowerShell pohranjena je u $profile ugrađenoj varijabli. Da biste ga kreirali, pokrenite naredbu
WMI objekti su prilično izvorni za PowerShell. Samo pokrenite komandu

A evo malog primjera anketiranja svih računara na lokalnoj mreži sa adresom 192.168.1.0 i maskom podmreže 255.255.255.0:

PowerShell:

1..254| ForEach-Object -Process ( Get-WmiObject -Class Win32_PingStatus -Filter ("Adresa="192.168.1." + $_ + """) -ComputerName . ) | Select-Object -Adresa svojstva,ResponseTime,StatusCode

U prvom elementu cevovoda generiše se niz brojeva od 1 do 254. U drugoj fazi, svaki broj iz niza se zamenjuje u IP adresu koja će biti pingovana pomoću WMI alata. Rezultati će biti prikazani u tabeli sa tri kolone - adresa domaćina, vrijeme odgovora i status odgovora. Ako host odgovori, vraća se statusni kod "0".

Rad sa COM objektima
.NET platforma ima ugrađene alate koji joj omogućavaju rad sa COM komponentama. Ova funkcija vam omogućava da kontrolišete rad različitih COM-omogućenih aplikacija. Kao primjer ćemo prikazati funkciju za automatizaciju rada sa Internet Explorerom. Otvorićemo IE i otići na WindowsFAQ.ru. Ako je niz proslijeđen kao parametar funkcije, potražit ćemo ga pomoću tražilice same stranice, ako parametar nedostaje, potražit ćemo riječ windows. Evo koda sa komentarima:

PowerShell:

# Deklarišite funkciju, postavite podrazumevani parametar - windows funkcija WinfaqSearch ($str = "windows") ( # Kreirajte COM objekat - Internet Explorer $ie = New-Object -Comobject InternetExplorer.application # Odredite navigacionu adresu pretraživača $ie. Navigate( "http://windowsfaq.ru") # Učinite pokrenutu IE instancu vidljivom $ie.Visible = $True # Za svaki slučaj, pričekajte da se stranica učita 5 sekundi Start-Sleep 5 # Dobijte tekst web stranica $doc=$ie.document # Tražimo polje za unos formulara za pretragu na stranici $text = $doc.getElementById("mod_search_searchword") # U njega unosimo željenu vrijednost $text.value = $str # Mi dobiti sam obrazac koji je odgovoran za pretragu $forms = @($ie.Document .forms | gdje ($_.action -match "index.php\?option=com_search&Itemid=5")) # Pošaljite mu zahtjev $forms.Submit() # Pitaj da li IE instancu treba zatvoriti ako (($resp = Read-Host "Zatvori Internet Explorer? [Y]Da/[N]Ne") -eq "y")( if ($ ie.Visible -eq $true)( $ie.Quit() ) Remove-Variable tj. ))

Zaključak
Naravno, nemoguće je opisati sve karakteristike PowerShell-a u jednom članku. Osim toga, Microsoft nastavlja raditi na njegovom poboljšanju – druga verzija bi trebala podržavati upravljanje udaljenim računarima direktno iz same ljuske. Očekuju se i druge inovacije. S obzirom da će PowerShell biti komponenta novih operativnih sistema, nema sumnje da će se obim njegove primene u Microsoft proizvodima samo širiti.

Autor se zahvaljuje Vasiliju Gusevu na pomoći u pripremi članka.

Mnogi korisnici znaju za komandni redak, ali vrlo malo njih je čulo za Windows PowerShell. U određenom smislu, PowerShell je alat koji ima za cilj da zamijeni komandnu liniju i pruži moćnije mogućnosti za upravljanje Windows operativnim sistemom. U ovom članku ćemo pokušati jasno objasniti šta je ovo alat, zašto je toliko moćan i ko ga najčešće koristi.

Šta je PowerShell?

Za bolje razumijevanje, prvo moramo razumjeti šta je školjka. U računarstvu, ljuska je korisnički interfejs koji omogućava pristup različitim uslugama operativnog sistema. Ljuska može biti bazirana na komandnoj liniji ili može uključivati ​​grafički korisnički interfejs (GUI).

Windows PowerShell je ljuska koju je razvio Microsoft za potrebe automatizacije zadataka i upravljanja konfiguracijom. Ova moćna ljuska je bazirana na .NET frameworku i uključuje ljusku komandne linije i jezik za skriptiranje.

Takođe može postojati Windows PowerShell ISE na vrhu standardne ljuske komandne linije. ISE djeluje kao integrirano okruženje za skriptiranje - grafičko korisničko sučelje koje vam omogućava da kreirate različite skripte bez potrebe da unosite sve komande u komandnoj liniji.

Prva verzija PowerShell-a objavljena je u novembru 2006. za Windows XP, Windows Server 2003 i Windows Vista. Najnovija je verzija 4.0, koja je objavljena u oktobru 2013. Podrazumevano dolazi sa Windows 8.1 i Windows Server 2012 R2.

Šta možete učiniti sa PowerShell-om?

Microsoft je razvio Windows PowerShell kao alat koji pomaže u automatizaciji i brzom rješavanju mnogih zamornih administrativnih zadataka. Na primjer, možete koristiti PowerShell da vidite sve USB uređaje instalirane na jednom ili više računara na vašoj mreži ili možete postaviti dugotrajan zadatak koji će se izvoditi u pozadini dok obavljate druge poslove. Takođe možete identifikovati i prekinuti procese koji ne reaguju ili filtrirati određene informacije o računarima na vašoj mreži i izvesti ih u HTML formatu.

Mogućnosti PowerShell-a omogućavaju vam da pojednostavite i automatizujete dugotrajne i ponavljajuće zadatke kreiranjem skripti i kombinovanjem više komandi zajedno.

Ako ste administrator mreže, PowerShell će vam biti vrlo koristan kada radite sa Active Directoryjem. Uzimajući u obzir da alat sadrži stotine prilagodljivih komandi zvanih cmdlet, vjerovatnoća da vam PowerShell može pomoći da postanete produktivniji je vrlo velika.

Kako pokrenuti PowerShell na Windows 8.1?

Ako nemate PowerShell pločicu na početnom ekranu ili prečicu na radnoj površini, možete je otvoriti pomoću pretrage - ovo je jedan od najjednostavnijih načina. Pritisnite +Q, upišite "powershell", a zatim pritisnite Enter.

PowerShell možete otvoriti i iz odjeljka Aplikacije na početnom ekranu: Idite na početni ekran i pomaknite kursor u donji lijevi ugao, odmah ispod posljednje pločice u prvoj koloni. Kliknite na ikonu sa strelicom usmjerenom prema dolje. Zatim kliknite na ikonu PowerShell u odjeljku "Uslužni programi".

Da biste otvorili PowerShell pomoću dijaloga Pokreni, pritisnite +R, upišite "powershell" i pritisnite Enter.

Kako pokrenuti PowerShell na Windows 7?

Na Windows 7 alat možete pronaći na ključna riječ"powershell" u start meniju.

PowerShell možete otvoriti i kroz Start meni u odjeljku Pribor.

Očigledno, gornja komanda u prozoru Run radi i u Windowsu 7.

Ko obično koristi PowerShell?

Bez ikakve sumnje, PowerShell je izbor mnogih IT administratora. I to s dobrim razlogom, jer alat uvelike pojednostavljuje operacije upravljanja i smanjuje količinu posla u velikim korporativnim mrežama.

Recimo da imate kontrolu velika mreža, koji sadrži preko pet stotina servera, a potrebno je implementirati novo sigurnosno rješenje koje ovisi o nekom servisu koji treba da radi na tim serverima. Naravno, možete se povezati sa svakim serverom i vidjeti da li je potrebna usluga instalirana i radi li se na njima. Međutim, u ovom slučaju, malo je vjerovatno da će vaš menadžment biti zadovoljan, jer će vam trebati previše vremena da završite zadatak.

Sa PowerShell-om, ovaj posao možete obaviti u roku od nekoliko minuta jer se cijela operacija može obaviti s jednom skriptom koja će prikupiti informacije o uslugama koje rade na navedenim serverima i sačuvati ih kao tekstualnu datoteku, npr.

PowerShell vam omogućava da uradite mnogo više nego što se može pokriti u jednom članku, pa ako ste zaista zainteresovani, toplo preporučujemo da kupite i pročitate jednu od mnogih knjiga koje pokrivaju moć ovog alata.

Ugodan dan!

Iskusni korisnici Windows 10 operativnog sistema možda su čuli za PowerShell uslužni program komandne linije. Oni sa iskustvom u radu sa Windows 7 i 8.1 takođe mogu biti upoznati sa tim. Nakon godina korištenja aplikacije Windows komandne linije i .bat datoteka, vrijeme je da se upoznate sa moćnijim alatom.

PowerShell je vrijedan dodatak listi Windows alata, a njegov opseg može biti zastrašujući za neke korisnike. Šta je to - skriptni jezik ili komandna školjka? Ne brinite: uprkos velikim mogućnostima, svako može savladati PowerShell.

Korak 1: Instalacija

Prvo, trebamo sam uslužni program PowerShell. Ako koristite Windows 10, već imate instaliranu verziju 5 PowerShell-a, Windows 10 Anniversary Update koristi verziju 5.1, ali razlika nije primjetna. Windows 8 i 8.1 koriste PowerShell 4, što je takođe sasvim dovoljno. Instaliranje PowerShell-a na Windows 7 neće uzrokovati probleme, ali ćete ipak morati poduzeti nekoliko dodatnih koraka. Konkretno, potrebno je dodatno instalirati .Net Framework. Možete instalirati Windows Management Framework, koji uključuje PowerShell.

PowerShell ima dva interfejsa. Napredni korisnici se mogu odlučiti za potpuno GUI sučelje poznato kao Integrated Scripting Environment (ISE). Za početnike, najbolje je koristiti PowerShell konzolu, jednostavan Windows interfejs u stilu komandne linije zasnovan na tekstu, ili čak DOS 3.2.

Da biste pokrenuli PowerShell kao administrator u operativnom sistemu Windows 10, kliknite na dugme Start i pomerite se nadole do Windows PowerShell. U operativnom sistemu Windows 8.1 potražite Windows PowerShell u fascikli Sistem u operativnom sistemu Windows. U Windows 7, ljuska se nalazi u fascikli Pribor. Kao običan korisnik, PowerShell se može pokrenuti na isti način, koristeći lijevu tipku miša umjesto desne.

Možete koristiti pretragu na bilo kojoj verziji Windows-a. Za lakšu buduću upotrebu, možete zakačiti PowerShell na traku zadataka.

Korak 2: Stare Windows komande

Sintaksa Windows komande u PowerShell-u radi kao i obično. na primjer, CD mijenja foldere, dir prikazuje listu svih datoteka i foldera unutar trenutnog foldera.

Ovisno o tome kako pokrećete PowerShell konzolu, možda ćete početi c:\Windows\system32 ili u c :\Korisnici\ . Primjer na snimku ekrana koristi naredbu CD..(sa razmakom) da se pomerite jedan po nivo gore, a zatim pokrenite naredbu dir za prikaz liste datoteka i fascikli u direktorijumu C:\.

Korak 3: Instalirajte datoteke pomoći

Timovi vole CD I dir nisu aktivne PowerShell komande. Ovo su takozvani aliasi - zamjene za prave PowerShell komande. Aliasi su korisni za one koji imaju veliko iskustvo sa komandnom linijom. Međutim, oni ne dotiču dubine PowerShell-a.

Da biste započeli sa PowerShell-om, otkucajte pomoć i komandu koja vam je potrebna. Snimak ekrana prikazuje komandu .

Tim pomoć kaže to dir je alias za naredbu PowerShell Get-ChildItem. Ako kucate get-childitem V PS C:\>, vidjet ćete istu stvar kao kada koristite naredbu dir.

Kao što je navedeno na dnu snimka ekrana, datoteke pomoći za PowerShell se ne instaliraju automatski. Da biste ih dobili, pokrenite PowerShell kao administrator i otkucajte update-help. Instaliranje datoteka pomoći će potrajati nekoliko minuta; možda će nedostajati određeni broj modula - na primjer, u ovom slučaju nisu instalirani pomoć za NetWNV i SecureBoot. Kada sve bude spremno, kompletan sistem pomoći će uvijek pružiti potrebne savjete.

Sada upišite naredbu dobiti pomoć i bilo koju komandu koja vas zanima („cmdlet“ u PowerShell-u, cmdlet na ruskom), njen opis će biti prikazan. na primjer, get-help get-childitem prikazuje listu opcija get-childitem. Također možete prikazati različite moguće opcije. Na primjer

get-help get-childitem -primjeri

pruža sedam detaljnih primjera upotrebe get-childitem. Tim

get-help get-childitem -detailed

uključuje ovih sedam primjera i detaljna objašnjenja svakog parametra u cmdlet-u get-childitem.

Korak 4: Potražite pomoć s postavkama

Na snimku ekrana možda ste primijetili dvije liste ispod SINTAKSA Za get-childitem. Imati dvije različite sintakse znači da postoje dva načina za pokretanje cmdleta. Kako zadržati sintaksu odvojenu jednu od druge i šta znače parametri? Odgovor je jednostavan ako znate trik.

Za detalje o cmdlet parametrima get-childitem ili bilo koji drugi parametar upotrebe -puna:

get-help get-childitem -full

Ovo vam daje listu onoga što možete učiniti sa cmdlet-om i šta će se dogoditi. Pogledajte snimak ekrana.

Pregledajući opise parametara, primijetit ćete to get-childitem omogućava dobijanje objekta dijete(kao što je naziv podmape ili naziv datoteke) na određenoj lokaciji, sa ili bez podudaranja određenih znakova. na primjer:

get-childItem “*.txt” -recurse

vraća listu "*.txt" fajlova u trenutnom folderu i svim podfolderima (zbog parametra -povratak). Dok

get-childitem “HKLM:\Softver”

vraća listu svih ključeva registra najvišeg nivoa HKEY_LOCAL_MACHINE\Softver.

Ako ste ikada pokušali da uđete u registar koristeći Windows komandnu liniju ili .bat datoteke, cijenit ćete funkcionalnost ove opcije pristupa.

Korak 5: Učenje imena

Postoji razlog zašto do sada prikazani cmdleti izgledaju slično: get-childitem, update-help, get-help koristiti jedan obrazac glagol-imenica. Sve PowerShell cmdlete koriste ovu konvenciju; koriste glagol ispred jedne imenice. Ovo će se svidjeti onima koji su nekada patili od nekonzistentnih naziva komandi u VB i VBA jezicima.

Pogledajte najčešće cmdlete:

set-location: postavlja trenutnu radnu lokaciju na određenu lokaciju

get-content: Uzima sadržaj datoteke

get-item: preuzima datoteke i fascikle

copy-item: kopira objekt s jedne lokacije na drugu

remove-item: Briše datoteke i foldere

: Pokreće procese na lokalnom ili udaljenom računaru

get-service: Pokreće usluge na lokalnom ili udaljenom računaru

invoke-webrequest: preuzima sadržaj sa web stranice na Internetu

Da vidite kako određeni cmdlet radi, koristite dobiti pomoć kao u slučaju

get-help copy-item -full

Na osnovu opisa u pomoći, možete razumjeti šta cmdlet treba. Na primjer, ako želite kopirati sve datoteke i mape iz Dokumenti V c:\temp, koristiti

copy-item c:\users\ \documents\* c:\temp

Ako unesete ovu naredbu, vidjet ćete nekoliko zanimljivih karakteristika PowerShell okruženja. Na primjer, ako kucate kopija-i i pritisnite dugme Tab, PowerShell će se popuniti Copy-Item. Ako neispravno unesete cmdlet i PowerShell ga ne može prepoznati, dat će se potpuni opis onoga što je pogrešno urađeno.

Isprobajte ovaj cmdlet:

invoke-webrequest askwoody.com

Dobit ćete kratku listu naslova, slika, linkova i drugog sadržaja web stranice. Napomena u dobiti pomoć na listu invoke-webrequest, koji „vraća kolekciju obrazaca, linkova, slika i ostalog važnog HTML elementi" - upravo ono što bi trebalo biti prikazano na ekranu.

Neke cmdlete vam pomažu da upravljate samim PowerShell-om:

get-command: lista svih dostupnih cmdlet-a

get-glagol: lista svih dostupnih glagola

clear-host: Obrišite ekran glavnog programa

Različiti parametri vam omogućavaju da smanjite komande i suzite raspon korisnih opcija. Na primjer, da biste vidjeli listu svih cmdlet-a koji rade sa Windows uslugama, otkucajte

get-command *-servis

Biće prikazani svi glagoli dostupni uz imenicu usluga. Evo njihove liste:

Get-Service

New-Service

Restart-Servis

Resume-Service

Set-Service

Start-Service

Stop-Servis

Suspend-Service

Možete kombinovati ove cmdlete sa drugim.

Korak 6: Korištenje cijevi

Ako ste upoznati sa Windows komandnom linijom ili batch datotekama, onda znate za preusmjeravanje i cijevi. Preusmjeravanje (> simbol) i cijevi (simbol |) uzimaju rezultat akcije i pričvršćuju ga na drugu lokaciju. Na primjer, možete preusmjeriti rezultat naredbe dir u tekstualnu datoteku ili proslijedite rezultat naredbe ping timu nađi za filtriranje zanimljivih rezultata poput

dir > temp.txt

ping askwoody.com | pronađite “packets” > temp2.txt

Ovdje u drugom timu nađi traži niz paketi, preuzet sa adrese askwoody.com od strane tima ping i spaja sve odgovarajuće linije u datoteku pod nazivom temp2.txt.

Prva od ovih naredbi radi dobro u PowerShell-u. Za pokretanje druge naredbe trebat će vam nešto poput

ping askwoody.com | paketi niza odabira | out-file temp2.txt

Korištenje preusmjeravanja i cijevi uvelike proširuje mogućnosti Windows komandne linije: umjesto beskonačnog pomicanja po ekranu da biste tražili tekstualni niz, možete filtrirati Windows komande koje su vam potrebne.

Powershell ima podršku cijevi, i nije ograničen na tekst. PowerShell vam omogućava da proslijedite cijeli objekt iz jednog cmdleta u drugi, gdje je objekt kombinacija podataka (nazvanih svojstvima) i akcija (metoda) koje mogu koristiti te podatke.

Teški dio dolazi kada se objekti poredaju. Objekti koje dostavlja jedan cmdlet moraju odgovarati tipu objekata koje prihvata cmdlet primatelj. Tekst je vrlo jednostavan tip objekta, tako da ako radite s tekstom, poravnavanje objekata je jednostavan zadatak. Preostali objekti nisu tako osnovni.

Kako ovo razumjeti? Koristite cmdlet get-member. Ako želite znati koju vrstu objekta cmdlet obrađuje, pokrenite ga get-member. Na primjer, ako pokušavate razumjeti procese koji se pokreću na računalu i suzili ste svoje mogućnosti na cmdlete , evo kako saznati rezultat cmdlet-a:

get-process | get-member

Pokretanje ovog cmdleta proizvodi dugačku listu svojstava i metoda za , ali na samom početku liste možete vidjeti tip objekta koji kreira :

Ime vrste: System.Diagnostics.Process

Snimak ekrana ispod također pokazuje svojstva pozvao get-process Handles, Ime, NPM, PM, SI, VM I W.S..

Ako želite da manipulišete rezultatom Da biste radili sa ovom cmdlet-om (umjesto prikazivanja dugačke liste aktivnih procesa na monitoru), morate pronaći drugu naredbu koja uzima kao ulaz System.Diagnostics.Process. Da biste pronašli cmdlet koji vam je potreban, ponovo koristite PowerShell:

get-command -Tip parametra System.Diagnostics.Process

Ovaj cmdlet pruža listu cmdlet-a koje mogu obraditi System.Diagnostics.Process.

Neki cmdleti su poznati po prihvatanju gotovo svih vrsta podataka. Glavni među njima je . Ovaj cmdlet prolazi kroz svaki objekt poslan kroz cijevi, jedan po jedan, i na njega primjenjuje specificirane kriterije odabira. Postoji poseban marker tzv $_ , što vam omogućava da koristite svaku stavku u cijevi, jednu po jednu.

Recimo da želite da dobijete listu svih procesa koji se pokreću na računaru sa imenom "svchost", odnosno želite da se podudarate sa svojstvom Ime proces svchost. Koristite naredbu:

get-process | gdje-objekat ($_.Name -eq “svchost”)

Cmdlet gleda svaki predmet System.Diagnostics.Process, upoređuje .Ime ovaj objekat sa "svchost"; ako ima podudaranja, oni se prikazuju na monitoru. Pogledajte snimak ekrana.

Korak 7: Analizirajte korisne PowerShell komande

Do sada već znate dovoljno da biste mogli oštetiti računar, stoga budite oprezni. Pogledajmo, na primjer, često tražene PowerShell komande.

Ove komande rade samo na Windows 10 i samo kada pokrenete PowerShell kao administrator. Dizajnirani su za ponovnu instalaciju unaprijed instaliranih Windows 10 aplikacija i mogu biti korisni onima koji su prvo deinstalirali te programe, a zatim odlučili da ih vrate. Komande izgledaju ovako:

Get-AppXPackage | Foreach (Add-AppxPackage -DisableDevelopmentMode -Registrirajte “$($_.InstallLocation)\AppXManifest.xml”)

Ako pokrenete ovu komandu, zanemarite crvena upozorenja i kada se komanda završi, ponovo pokrenite računar; svi prethodno instalirani programi u Windows 10 će se pojaviti na svojim mjestima.

Evo kako ova komanda funkcionira. Get-AppXPackage provjerava sve pakete aplikacija u korisničkom profilu. Čak i ako izbrišete aplikaciju, ona ostaje na listi korisničkih profila.

Cmdlet Get-AppXPackage vraća objekat Ime vrste Microsoft.Windows.Appx.PackageManager.Commands.AppxPackage, što uključuje puno ime paket aplikacije i lokaciju odgovarajuće XML manifest datoteke. Ako pokrenete cmdlet get-appxpackage, vidjet ćete dugu listu paketa aplikacija. Snimak ekrana prikazuje opis Xbox aplikacije.

Cmdlet Foreach petlje kroz svaki objekat AppXPackage tako što ćete ih poslati u cmdlet Add-AppxPackage. Prema dobiti pomoć Za Add-AppxPackage, postoje dva ključna prekidača:

  • Prekidač -Registruj se koji se koristi za registraciju postojećih instalacija aplikacijskih paketa, možete postaviti parametre DisableDevelopmentMode I Registrirajte se
  • Prekidač -DisableDevelopmentMode govori Windows-u da ponovo registruje postojeći paket aplikacija koji je onemogućen, neregistrovan ili oštećen.

linija " $($_.InstallLocation)\AppXManifest.x ml" opisuje gdje se datoteka nalazi manifest.xml. Ako pogledate fajlove AppXManifest.xml, videćete složena lista identifikatori aplikacije, izvršne datoteke i veliki broj vizuelnih elemenata povezanih sa aplikacijom.

Nakon ponovnog pokretanja, svi dodani paketi aplikacija se preuzimaju i instaliraju iz Windows Store-a.

Zdravo svima! Danas kratka napomena na temu, kako otvoriti powershell kao administrator. Dozvolite mi da vas podsjetim da je PowerShell moćan programski i administrativni jezik iz Microsofta svake godine dobija sve veći broj cmdlet-a i funkcionalnosti. U suštini, to je zamjena za Windows Command Prompt. U nastavku ćemo razmotriti metode koje vam omogućavaju da ga otvorite i konfigurirate.
.

Metode za otvaranje PowerShell dodatka

Powershell se jako dobro razvija i sa izdavanjem Windows 10 već je dobio verziju 5, ali naša tema je drugačija. Dakle, kako otvoriti powershell? Sve je jednostavno ako u Windows XP, onda ništa. Pošto se isporučuje zasebno, u svim narednim izdanjima dolazi kao ugrađena komponenta. Najuniverzalniji način za otvaranje powershell-a je klik

Win+R i unesite powershell

Pritiskom na enter pokreće se PowerShell konzola, jedini problem je što se neće otvoriti kao administrator. I kao rezultat toga, mnoge komande neće biti izvršene u nastavku ćemo vidjeti kako to učiniti u ime administratora.

Kako pokrenuti windows powershell kao administrator u Windowsima 8.1 i Windows 7

Možete otvoriti Windows Powershell preko Start. U Windows 8.1, Windows 2012 R2, idite na Sistemske alatke - Windows i kliknite desnim tasterom miša i izaberite Pokreni kao administrator.

U Windows 7 i Windows 2008 R2 to izgleda ovako Start > Pribor > Windows PowerShell

Također možete kreirati prečicu u stavci zadatka i desnim klikom na nju odabrati odgovarajuću stavku

Bilo bi zgodno kada bi se PowerShell uvijek otvarao kao administrator, hajde da ga implementiramo. Ovo se radi na isti način u svim verzijama Windowsa. Otvaranje kontrolne table

Kliknite desnim tasterom miša na njega i izaberite Svojstva. Možete odmah vidjeti putanju do datoteke gdje se nalazi u sistemu.

Kliknite na dugme "Napredno". Vidjet ćete dodatna svojstva. gdje trebate označiti polje Pokreni kao administrator.

Vrlo je jednostavno. Siguran sam da sada nećete imati pitanje kako da otvorite Windows Powershell. Još jedna korisna stvar je promjena fonta u prozoru Powershell-a.

Kako otvoriti PowerShell iz kontekstnog menija dugmeta Start u Windows 10

Microsoft se sve više fokusira na svoj moćni jezik (PowerShell) iz komandne linije, i to je logično, budući da su njegove mogućnosti za upravljanje operativnim sistemima Windows porodice gotovo neograničene, ako ne i više nego u grafičkom interfejsu. Počevši od verzije 1709 Windows 10, u kontekstualnom meniju, PowerShell je zamijenio uobičajeni cmd. Kliknite desnim tasterom miša na dugme Start u Windows 10 i iz kontekstnog menija izaberite odgovarajuću stavku:

  1. Windows PowerShell
  2. Windows PowerShell (administrator) je upravo režim sa maksimalnim pravima u Windows 10.

Pokrenite Windows PowerShell koristeći pretragu u Windows 10

U Windows 10 i starijim verzijama, možete pronaći ljusku PowerShell koristeći redovnu pretragu za to; Kliknite pored dugmeta Start, ikonu lupe. U obrazac za pretragu koji se otvori unesite riječ PowerShell. Tražit ćete sve opcije, među kojima ćete pronaći ljusku. Ako kliknete desnim tasterom miša na njega, možete ga otvoriti kao administrator.

Pokretanje Windows PowerShell-a iz menija Start u operativnom sistemu Windows 10

Da biste otvorili PowerShell iz menija Start, otvorite ga i pronađite stavku Windows PowerShell, ona će biti u obliku fascikle, otvorite je i pokrenite odgovarajuću verziju.

Ako kliknete desnim tasterom miša, možete pokrenuti Vershel shell kao administrator s administratorskim pravima.

Dodatne i generičke metode pokretanja ljuske

Postoje i vrlo specifične metode za otvaranje ljuske sa moćnim jezikom iz Microsofta. Najnespretniji je jednostavno pronaći izvršnu datoteku i pokrenuti je direktno sa njene lokacije na sistemu. Idemo na vaš Windows 10 sljedećim putem:

C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell

Kao rezultat toga, vidjet ćete fasciklu sa prečicama koje su prisutne u Start meniju, možete ih pokrenuti.

Također možete pokrenuti originalnu izvršnu datoteku, koja se nalazi duž putanje:

C:\Windows\System32\WindowsPowerShell\v1.0

A desnim klikom na njega možete ga preuzeti kao administrator, sa maksimalnim pravima.

Također možete pokrenuti Windows PowerShell iz prozora komandne linije, jednostavno unesite čarobnu riječ u njega i pritisnite Enter.

Pa, da vas podsjetim i na metodu pokretanja novog zadatka iz dodatka “Task Manager”. Otvorite "Task Manager", odaberite stavku menija "Datoteka - Pokreni novi zadatak"

U prozoru koji se pojavi unesite PowerShell.

Pa, posljednja metoda koja mi je poznata je pokretanje PowerShell-a kroz Windows 10 Explorer, da biste to učinili, otvorite Explorer, odaberite stavku menija "Datoteka - pokrenite Windows PowerShell", postojat će oba načina.

Odgovorni administrator uvijek ima dva naloga, prvi ima minimalna prava običnog korisnika za svakodnevne poslove. Drugi već ima potrebne administrativne privilegije iz kojih konfiguriše servere i sve što je povezano. IN operativni sistemi Windows ima funkcionalnost koja vam omogućava, dok ste u sesiji jednog korisnika, da pokrenete aplikaciju u ime drugog, koji ima naprednija prava. Dakle, u redovnoj korisničkoj sesiji, administrator sistema pokreće PowerShell u ime korisnika sa različitim pravima i mirno upravlja onim što želi.

Da biste pokrenuli PowerShell kao drugi korisnik, potrebno je da držite pritisnuto dugme SHIFT, zatim kliknite desnim tasterom miša na PowerShell ikonu i izaberite „Pokreni kao drugi korisnik“ iz kontekstnog menija.

Unesite korisničko ime i lozinku za onaj koji vam je potreban račun. Kao rezultat toga, ljuska će raditi u kontekstu drugog korisnika.

Također možete pokrenuti novi PowerShell prozor iz prozora trenutnog korisnika, ali s novim pravima, da biste to učinili, unesite naredbu:

pokrenuti powershell -akreditiv ""

U prozoru sa zahtjevom za nalog navedite login i lozinku za nalog koji ima prava koja su vam potrebna za vaš dalji rad.

Šta je PowerShell ISE

Verovatno ste primetili da je PowerShell ISE prečica svuda i želite da znate šta je to. Ukratko, ovo je posebna ljuska u kojoj možete pisati skripte i skripte u PowerShell-u, koristeći svu raznolikost cmdlet-a koje vam Microsoft nudi.

Jedna od zgodnih metoda za pokretanje PowerShell ljuske, ako se koristi vrlo često, je dodijeliti joj kombinaciju prečaca, koja, kada se pritisne, pokreće ljusku. To je vrlo lako uraditi. Otvori prozor svojstva PowerShell, na kartici " Label"pronađi predmet" Brzi poziv“, po defaultu ima status br.

Odaberite ga i pritisnite tipku Shift ili Ctrl, ili CTRL+SHIFT, kao rezultat toga ćete zamijeniti konstrukciju za buduću kombinaciju i pritisnuti bilo koju tipku iz raspona slova, u mom primjeru ispalo je CTRL + SHFT + C Ovo je kombinacija koju ću nazvati vaš PowerShell. Sačuvajte podešavanja. Također napominjem da ga možete lako otkazati ili promijeniti u drugi.

Pokušavam da unesem kombinaciju prečica CTRL + SHFT + C, kao što vidim sve radi odlično.

Pokretanje ljuske iz ISE-a

Donedavno sam obično otvarao ISE iz obične PowerShell ljuske, a ne obrnuto, ali kakvo sam iznenađenje bio što sam u svom “File-u” pronašao stavku “Run PowerShell.exe” i čak postoji i prečica na tastaturi Ctrl+Shift +P.

Powershell promjena fonta je vrlo jednostavna, idite na karticu Font u svojstvima, gdje možete podesiti veličinu od 5 do 72.

Također možete doći do svojstava iz samog prozora uslužnog programa, kliknite na ikonu u gornjem lijevom uglu i odaberite svojstva

Ovdje su postavke fonta malo drugačije, a kako se mijenjaju, mijenja se i veličina konzole.

Na kartici Boje možete postaviti boju fonta u Powershell-u i samom prozoru. Tako što ćete ga, na primjer, učiniti crnim, poput komandne linije.

Također savjetujem da ako ste aktivni korisnik konzole, postavite veličinu bafera ne na 50 komandi, već barem na 100.

Samo automatizacija. Samo PowerShell.

Predgovor

Kao hobi i kada imam vremena, predajem studentima na UKIT-u (bivša Moskva državni koledž informacione tehnologije). Trenutno imam malo vremena da se posvetim grupi studenata, ali dovoljno je da pripremim post ovdje na Habréu.

Radim kao sistem administrator u velikoj ne-IT kompaniji sa puno IT resursa. Po vrsti djelatnosti, čini se da rješava veliki broj sličnih zadataka za servisiranje korisnika.

S PowerShell jezikom sam se upoznao prije otprilike dvije godine, ali sam se njime ozbiljno bavio tek godinu dana kasnije, ne shvatajući isprva njegove ogromne mogućnosti. U ovom članku prije svega ću se fokusirati na one koji žele početi raditi sa PowerShell-om, ali mu još ne vjeruju ili ne znaju na koji način da pristupe ovom čudu.

Upozorenje: PowerShell stvara ovisnost.

Uvod

Wikipedia nam kaže:
Windows PowerShell- proširivi alat za automatizaciju iz Microsoft, koji se sastoji od ljuske komandne linije i pratećeg skriptnog jezika.

PowerShell okruženje može izgledati kao komandna linija:


powershell.exe

Ili kao aplikacija:


powershell_ise.exe

Powershell_ise.exe nazvano integrisano okruženje za skriptovanje - Windows PowerShell ISE. Omogućava vam da radite sa jezikom u pogodnom okruženju sa isticanjem sintakse, konstruktorom komandi, automatskim dovršavanjem komandi pritiskom na TAB i drugim pogodnostima. Idealno za kreiranje i testiranje skripti.

Za početak okoline powershell.exe ili powershell_ise.exe Samo upišite isto ime u liniju za izvršavanje.

Datoteka PowerShell skripte ima ekstenziju .ps1.

Skripta se ne može pokrenuti sa duplim LMB. Ovo se radi posebno kako ne bi oštetili sistem slučajno pokrenutom skriptom.

Da biste pokrenuli, kliknite desnim tasterom miša i odaberite "Pokreni koristeći PowerShell":

Pored činjenice da postoji ograničenje za pokretanje LMB skripti, po defaultu je zabranjeno izvršavanje skripti u sistemu, opet, iz gore opisanog razloga - da se ne ošteti sistem. Da provjerite trenutnu politiku izvršavanja, pokrenite naredbu:

Get-ExecutionPolicy

Dobićemo jednu od sledećih vrednosti. WITH velika vjerovatnoća, ako je ovo bila prva vožnja, dobivamo Ograničeno.

  • Ograničeno- Skripte se ne mogu pokrenuti;
  • AllSigned- Mogu se pokretati samo skripte koje je potpisao pouzdani izdavač. Potvrda će se tražiti prije pokretanja skripte pouzdanog izdavača;
  • RemoteSigned- Dozvoljeno pokretanje skripti koje smo kreirali i preuzetih skripti potpisanih od pouzdanog izdavača;
  • Neograničeno- Nema ograničenja, sve skripte se mogu pokrenuti.

Za izvršenje i testiranje, snizite politiku na RemoteSigned pokretanjem naredbe:

Set-ExecutionPolicy RemoteSigned

Hajde da počnemo

Cmdlet
  • Cmdleti su PowerShell komande koje sadrže različite funkcionalnosti;
  • Cmdleti mogu biti sistemski ili kreirani od strane korisnika;
  • Cmdleti se imenuju prema pravilu glagola i imenice, što ih čini lakšim za pamćenje;
  • Cmdlete izlaze rezultate kao objekte ili kolekcije objekata;
  • Cmdlete mogu primati podatke za obradu i prenositi podatke kroz cjevovod (više o cjevovodima kasnije);
  • Cmdlete ne razlikuju velika i mala slova (možete pisati get-process, Get-Process i GeT-pRoCeSs);
  • Nije potrebno stavljati " nakon cmdlet-a ; ", osim kada izvršavamo više cmdlet-a u jednoj liniji (Get-Process; Get-Services).

Na primjer, da bismo dobili trenutne procese, pokrenut ćemo naredbu:

I dobijamo rezultat:

Probajte sami:

Get-Service #da biste dobili status usluga koje rade na računarima

Get-Content C:\Windows\System32\drivers\etc\hosts #da biste dobili sadržaj datoteke. u ovom slučaju, hosts fajl

Ne morate znati sve cmdlete napamet. Get-Helpće spasiti situaciju.
Možete dobiti informacije o svim dostupnim cmdletima pokretanjem sljedeće naredbe:

Get-Help -Category cmdlet

Ako koristimo PowerShell ISE, olakšavamo proces razvoja.
Samo unesite crticu " - " nakon što unesemo cmdlet, dobićemo sve moguće opcije za parametre i njihove tipove:

Pokušajte:

Get-Service-Naziv p*

Međutim, ako zaboravimo koja svojstva ima ovaj ili onaj cmdlet, proći ćemo kroz njega Get-Member:

Get-Process | Get-member #Sign "|" zove se transporter. O njemu u nastavku.

Nemate dovoljno informacija? Pogledajmo pomoć sa parametrom -Primeri:

Get-Help Get-Process -Primeri

Dobijamo opis Get-Process, pa čak i sa primjerima upotrebe:

  • Cmdlete mogu imati skraćena imena - aliase. Na primjer, umjesto Get-Help može se koristiti jednostavno Upomoć. Da biste dobili sve skraćenice, pokrenite Get-Alias.

Pokušajte:

Start-Proces notes

Što je slično pisanju:

Pokreni notepad

Sada zaustavimo proces:

Zaustavi proces -bilježnica za ime

Spps -Beležnica sa imenima

Malo ranije smo rekli da se cmdleti imenuju prema pravilu glagola i imenice. Dozvolite mi da pojasnim da glagol ne mora biti Get. Pored onoga što možemo dobiti, možemo tražiti Set(zapamtite, Set-ExecutionPolicy), pokrenite Počni, stani Stani, izlaz Van, kreirati Novo i mnogi drugi. Ime cmdleta nije ograničeno ni na šta, a kada kreiramo sopstveni, možemo ga nazvati kako nam srce poželi.

Pokušajmo izvesti u datoteku:

"Zdravo, Habr!" | Izlazni fajl C:\test.txt & C:\test.txt

Usput, možete to napisati ovako:

"Zdravo, Habr!" > C:\test.txt & C:\test.txt