Introducere-to-Powershell

Introducere in Powershell

Windows PowerShell este cadrul de automatizare a sarcinilor Microsoft, constand dintr-un shell de linie de comanda si un limbaj de script asociat construit pe partea de sus a .NET Framework. PowerShell ofera acces complet la COM si WMI, permitand administratorilor sa efectueze sarcini administrative atat pe sistemele Windows locale cat si la distanta.

PowerShell este o noua interfata de linie de comanda Microsoft pentru sistemele Windows, ofera acces la CMD, Cmdlets, .Net Framework API, functii Powershell, acces la WMI (Windows Management Instrumentation si acces la Windows COM (Component Object Model)

Windows PowerShell include urmatoarele caracteristici:

  • Cmdlet-uri pentru efectuarea unor sarcini comune de administrare a sistemului, cum ar fi gestionarea registrului, serviciilor, proceselor si jurnalelor de evenimente si folosirea Windows Management Instrumentation (WMI).
  • Un limbaj de script bazat pe sarcini si suport pentru scripturile existente si instrumentele din linia de comanda.
  • Proiectare consecventa. Deoarece cmdlet-urile si depozitele de date ale sistemului folosesc conventii de sintaxa si denumire comune, datele pot fi partajate cu usurinta, iar iesirea dintr-un cmdlet poate fi utilizata ca intrare la un alt cmdlet, fara reformatare sau manipulare.
  • Navigare simplificata, bazata pe comanda, a sistemului de operare, care permite utilizatorilor sa navigheze in registru si alte depozite de date utilizand aceleasi tehnici pe care le folosesc pentru a naviga in sistemul de fisiere.
  • Capacitati puternice de manipulare a obiectelor. Obiectele pot fi manipulate direct sau trimise catre alte instrumente sau baze de date.
  • Interfata extensibila. Vanzatorii de software independenti si dezvoltatorii de intreprinderi pot construi instrumente si utilitati personalizate pentru administrarea software-ului.

Iesirea este intotdeauna un obiect .NET Va rugam sa va amintiti ca iesirea PowerShell este intotdeauna un obiect .NET. Aceasta iesire ar putea fi un System.Diagnostics.Process un obiect sau un obiect System.IO.FileInfo sau un obiect System.String. Practic, ar putea fi orice obiect .NET al carui ansamblu este incarcat in PowerShell, inclusiv propriile obiecte .NET.

Pe sistemul Windows inainte de Windows 8 si Windows 2012, PowerShell poate fi gasit la
Start -> Toate programele -> Accesorii -> Instrumente de sistem
In functie de arhitectura sistemului de operare, va exista o versiune x86 si o versiune x64 de PowerShell.

Cateva recomandari la incarcarea PowerShell:

Deoarece PowerShell ofera acces la multe functii administrative, este recomandat sa-l executati ca Administrator.

Array

Daca sunteti pe un sistem x64, asigurati-va ca rulati versiunea x64 a acestuia (cea care nu are x86 in numele scurtaturii)

Pe PowerShell v4 ISE poate fi folosit si ca un prompt de comanda interactiva in care sunt introduse comenzi pe fereastra si iesirea este afisata in urmatoarea, in plus este un editor de scripturi cu evidentierea sintaxei

PowerShell este un nou shell de comenzi de la Microsoft si da, este un prompt de comanda si un mediu de script, poate fi chiar ambele in acelasi timp. Dar ce inseamna PowerShell intr-adevar pentru un administrator de sisteme? Care sunt avantajele invatarii PowerShell? Daca gestionati resurse cu VBScript stiti deja raspunsurile. Domeniile Active Directory devin din ce in ce mai mari si mai complexe. Pentru administratorii care sunt inca inlantuiti la instrumente GUI si Microsoft Management Console, PowerShell va va elibera !!!

A devenit o sarcina descurajanta de a gestiona resurse in domenii mari, GUI pur si simplu nu va mai DUI. De exemplu, luati ultima modificare DST (Ora de vara). Microsoft a raspuns incet (dupa parerea mea), dar a furnizat solutii corecte pentru XP si Windows 2003. Windows 2000 era o poveste diferita, administratorii de sistem trebuiau sa se bazeze pe o editare manuala folosind tzedit.exe (cu exceptia cazului in care aveti un contract premier). Revin vreun cosmar? Aici a fost cosmarul meu; seful a intrebat: „De unde stim ca solutiile la hot DST si tzedit-ul manual au functionat efectiv?” Inghititura! Slava Domnului ca am lucrat deja la raspunsul la aceasta intrebare. Am gasit un articol KB publicat pe site-ul web Microsoft care listeaza noile inregistrari ale registrului DST si locatiile acestora. Deci, cu VBScript am enumerat setarile registrului, pe baza versiunii sistemului de operare, si a creat un raport. Am gasit o rata de esec de 25% dupa ce am aplicat solutii la cald si tzedit. Asadar, am scris un alt script care sa editeze setarile registrului cu configuratia corecta. Din fericire, toate sistemele mele de server (300+) au pornit la setarile DST corespunzatoare. Ok, deci acum va ganditi „de ce vorbim despre VBScript? Acesta este un tutorial PowerShell !!!” Ideea mea este ca stiu o multime de lucratori IT care au fost nevoiti sa actualizeze manual registrul atunci cand ceasurile nu s-au lansat, forumurile de mesaje si forumurile au fost pline de inregistrari. Ce ai face mai degraba, sa te conectezi la fiecare server si sa rezolvi manual problema sau sa rulezi un script pentru a remedia problema? PowerShell ar fi fost un instrument excelent pentru aceasta situatie; Eram mai familiar cu VBScript la acea vreme. Am scris un alt script care sa editeze setarile registrului cu configuratia corecta. Din fericire, toate sistemele mele de server (300+) au pornit la setarile DST corespunzatoare. Ok, deci acum va ganditi „de ce vorbim despre VBScript? Acesta este un tutorial PowerShell !!!” Ideea mea este ca stiu o multime de lucratori IT care au fost nevoiti sa actualizeze manual registrul atunci cand ceasurile nu s-au derulat inainte, forumurile de mesaje si forumurile erau pline de inregistrari. Ce ai face mai degraba, sa te conectezi la fiecare server si sa rezolvi manual problema sau sa rulezi un script pentru a remedia problema pentru tine? PowerShell ar fi fost un instrument excelent pentru aceasta situatie; Eram mai familiar cu VBScript la acea vreme. Am scris un alt script care sa editeze setarile registrului cu configuratia corecta. Din fericire, toate sistemele mele de server (300+) au pornit la setarile DST corespunzatoare. Ok, deci acum va ganditi „de ce vorbim despre VBScript? Acesta este un tutorial PowerShell !!!” Ideea mea este ca stiu o multime de lucratori IT care au fost nevoiti sa actualizeze manual registrul atunci cand ceasurile nu s-au derulat inainte, forumurile de mesaje si forumurile erau pline de inregistrari. Ce ai face mai degraba, sa te conectezi la fiecare server si sa rezolvi manual problema sau sa rulezi un script pentru a remedia problema pentru tine? PowerShell ar fi fost un instrument excelent pentru aceasta situatie; Eram mai familiar cu VBScript la acea vreme. toate sistemele mele de server (300+) au pornit la setarile DST corespunzatoare. Ok, deci acum va ganditi „de ce vorbim despre VBScript? Acesta este un tutorial PowerShell !!!” Ideea mea este ca stiu o multime de lucratori IT care au fost nevoiti sa actualizeze manual registrul atunci cand ceasurile nu s-au derulat inainte, forumurile de mesaje si forumurile erau pline de inregistrari. Ce ai face mai degraba, sa te conectezi la fiecare server si sa rezolvi manual problema sau sa rulezi un script pentru a remedia problema pentru tine? PowerShell ar fi fost un instrument excelent pentru aceasta situatie; Eram mai familiar cu VBScript la acea vreme.

toate sistemele mele de server (300+) au pornit la setarile DST corespunzatoare. Ok, deci acum va ganditi „de ce vorbim despre VBScript? Acesta este un tutorial PowerShell !!!” Ideea mea este ca stiu o multime de lucratori IT care au fost nevoiti sa actualizeze manual registrul atunci cand ceasurile nu s-au derulat inainte, forumurile de mesaje si forumurile erau pline de inregistrari. Ce ai face mai degraba, sa te conectezi la fiecare server si sa rezolvi manual problema sau sa rulezi un script pentru a remedia problema pentru tine? PowerShell ar fi fost un instrument excelent pentru aceasta situatie; Eram mai familiar cu VBScript la acea vreme. forumurile de mesaje si forumurile erau pline de postari. Ce ai face mai degraba, sa te conectezi la fiecare server si sa rezolvi manual problema sau sa rulezi un script pentru a remedia problema pentru tine? PowerShell ar fi fost un instrument excelent pentru aceasta situatie; Eram mai familiar cu VBScript la acea vreme. forumurile de mesaje si forumurile erau pline de postari. Ce ai face mai degraba, sa te conectezi la fiecare server si sa rezolvi manual problema sau sa rulezi un script pentru a remedia problema? PowerShell ar fi fost un instrument excelent pentru aceasta situatie; Eram mai familiar cu VBScript la acea vreme.

Am citit si mi s-a cerut urmatoarele: „VBScript este inca un instrument viabil … deci de ce ar trebui sa invat PowerShell?” Am cateva raspunsuri simple pentru asta:

1. PowerShell a fost proiectat pentru obiecte .NET; VBScript nu accepta o metoda de comunicare sau interactiune cu .NET. Vom vorbi mai multe despre .NET in tutorialele ulterioare.

2. Invatarea PowerShell va va avansa in continuare cariera. Crede-ma, asa va fi.

Aceasta introducere nu s-a bazat pe ce este PowerShell, ci pe ceea ce PowerShell, ca Shell si un limbaj de script, pot face pentru tine. Exemplul DST este doar varful aisbergului cand vine vorba de puterea limbajelor de script. Ce este „PowerShell” veti descoperi pe masura ce continuati invatarea. Ce este excelent despre PowerShell, il vei putea folosi chiar din poarta pentru a finaliza sarcini simple. Pe masura ce cunostintele iti cresc, vei putea sa iti asumi sarcini mai complexe.

Conceptele PowerShell

PowerShell este bazat pe obiecte si nu pe baza de text


Acest concept va avea nevoie de putin timp pentru actiunile dos / cmd.exe si pentru scripturile de lot. Cei care folosesc VBScript si alte limbaje de programare inteleg deja conceptul. Diferenta de baza, iesirea prompta a comenzii traditionale este bazata pe text, in timp ce iesirea in PowerShell nu este. Pare un text, dar este de fapt un obiect. De ce este acest lucru puternic? Deoarece iesirea unei comenzi PowerShell (obiectul) poate fi conectata la o alta comanda fara programare suplimentara. Cu scripturi traditionale, daca doriti sa utilizati iesirea unei comenzi in alta, programarea suplimentara ar fi necesara pentru a manipula datele intr-un format pe care il poate intelege a doua comanda. Ce este un obiect? Acest lucru ar trebui sa sune familiar Administratorilor Windows de acolo … „Totul dintr-un domeniu Active Directory este un obiect.” Servere, calculatoare,

Comenzile PowerShell sunt comenzile personalizabile

PowerShell sunt denumite Cmdlets. Odata cu instalarea PowerShell, exista peste o suta de cmdleturi pentru care va puteti apropia si personal. Echipa PowerShell, in intelepciunea lor infinita, a creat aliasuri pentru a ne permite sa folosim comenzile traditionale cu care ne-am obisnuit (dir, cd, del, copy, etc …). Chiar si tipii UNIX fac o pauza cu alias-urile furnizate (ls, om, etc …) PowerShell va permite sa va creati propriul alias, precum si sa va creati propriile cmdlet-uri. Da, spre deosebire de dos / cmd si reskit exe’s, PowerShell ofera o metoda pentru a crea propriile dvs. cmdleturi PowerShell.


PowerShell este un interpret de linie de comanda si un mediu de script

Intr-un cuvant, aveti cel mai bun din ambele lumi din PowerShell. DOS a fost un interpret de linie de comanda, introduceti iesire de comanda. Sigur ca puteti utiliza fisiere batch, dar in realitate un fisier batch a introdus doar comenzile pentru dvs. VBScript utilizeaza WSH (Windows Scripting Host); nu puteti introduce cod VBScript intr-un prompt de comanda. Cu PowerShell nu numai ca puteti introduce comenzi, puteti construi blocuri de scripturi de la linia de comanda PowerShell. Vei face acest lucru in tutorialele ulterioare.

Consola Windows PowerShell

Haideti sa aruncam o privire la Windows PowerShell Console. Accesati Start -> Programe -> Windows PowerShell 1.0 -> Windows PowerShell

Puteti, de asemenea, sa lansati PowerShell dintr-un prompt de comanda sau in start -> rulati doar tastand powershell

Veti observa promptul de comanda PS U: \>

PS semnifica faptul ca executati PowerShell, U: este litera de conducere a directorului meu de origine. Al tau poate fi diferit.


Exercitiul 1: Personalizati o comanda rapida pentru a indrepta spre un director de acasa

Dupa cum ati observat punctele mele prompt catre U: Drive. Imi place sa-mi organizez scripturile intr-o singura locatie unde le pot accesa rapid. U: este o unitate de mapare catre directorul meu de acasa pe un server de fisiere. Am ales serverul meu de fisiere, deoarece este sustinut noaptea. In acest exercitiu, configuram PowerShell Console pentru a se deschide intr-un director numit „MyScripts”.

1. Creati urmatorul director – C: \ MyScripts.

2. Creati o comanda rapida PowerShell pe desktop.

3. Faceti clic dreapta pe comanda rapida si alegeti Proprietati.

4. Sub fila Comenza rapida localizati caseta de text Start in:. Tastati calea catre folderul creat la pasul 1. C: \ MyScripts

5. Faceti clic pe Ok.

6. Lansati PowerShell din scurtatura de pe desktop.

PowerShell incepe in calea directorului pe care am ales-o:

Simtiti-va liber sa alegeti calea directoare aleasa de dvs. Daca calea dvs. are un spatiu in ea, nu uitati sa o citati dublu. Exemplu: „C: \ Program Files \ MyScripts.” Voi lucra din
calea directorului C: \ MyScripts de-a lungul tutorialelor.

Exercitiul 2: Personalizarea culorii si dimensiunea textului

Va amintiti promptul DOS cu fundalul albastru si textul galben? Ok, ma intalnesc, dar cel putin nu am spus monocrom. Voi schimba comanda rapida in acele culori.

1. Faceti clic dreapta pe comanda rapida si alegeti Proprietati.

2. Alegeti fila Culori.

3. Veti vedea patru butoane radio; Textul ecranului, fundal ecran, text pop-up si fundal pop-up. Butoanele Ecranului se explica de la sine; butoanele pop-up sunt pentru culorile utilizate in bufferul istoric.

4. Setati textul ecranului la galben, ecranul fundal la albastru.

5. Lansati PowerShell din scurtatura de pe desktop.

PowerShell ruleaza in culorile pe care le-am ales:

Urmatorul, voi face textul mai mare, asa ca nu trebuie sa alung.

1. Inchideti PowerShell Console tastand exit .

2. Faceti clic dreapta pe comanda rapida PowerShell si alegeti Proprietati.

3. Din fila Fonturi, alegeti 12 x 16. Faceti clic pe OK.

4. Lansati PowerShell din scurtatura.

Vedeti urmatoarele? Adica o poti vedea cu adevarat acum?

Faceti cateva minute si jucati-va cu toate optiunile din proprietatile comenzii rapide. Personalizati coaja dupa preferinte. Daca doriti sa va intoarceti la dimensiunea implicita a textului, aceasta este de 8 x 12. Puteti ajunge si la proprietati dand clic pe pictograma PowerShell din coltul din stanga sus. Trebuie doar sa stiti ca atunci cand faceti clic pe „OK”, vi se va solicita sa modificati setarile ferestrei curente sau sa modificati comanda rapida.

Exercitiul 3: Editarea functiilor in consola PowerShell

In ultimul exercitiu al acestui tutorial vreau sa prezint cateva functii de editare. Voi doar sa le enumar si sa va rog sa jucati in consola pana cand nu sunteti confortabil cu modul de functionare.

In primul rand, introduceti urmatoarele comenzi la promptul de comanda (pentru acest exercitiu, ceea ce face codul nu este important):

get-acl <enter>

get-alias <enter>

get-command <enter>

get-date <enter>

Localizati si tastati tastele de mai jos pe tastatura, urmariti ce se intampla.

  • Pagina sus – Sari la prima comanda din bufferul istoric.
  • Pagina in jos – Sari la ultima comanda din bufferul istoric.
  • Sageata sus – revine o comanda din bufferul istoric.
  • Sageata jos – inainteaza o comanda in bufferul istoric.
  • Acasa – Sari la inceputul liniei de comanda.
  • End – Salt la sfarsitul liniei de comanda.

· Ctrl + LeftArrow – merge la stanga cate un cuvant la un moment dat. (In tipul consolei – lectia de tutorial PowerShell 1 )

· Ctrl + RightArrow – merge la dreapta pe cuvant la un moment dat. (In tipul consolei – lectia de tutorial PowerShell 1 )

  • Tab – Completeaza intrarea (in consola de tip get-c si apasati fila, apasati din nou fila …).

· F7 – Afiseaza bufferul istoric (folositi tastele sageata sus si jos pentru a naviga in buffer).