Shell galia, skirta Windows

Jei visa tai skamba paprastai, taip yra, bet „Microsoft“ prireikė kelerių metų, kad pasiektų šį tikslą. Pagrindinis PowerShell dizaino aspektas yra žinių perdavimas ir panaudojimas; tai yra, vienos cmdlet žinojimas padeda suprasti, ką daro kita. Dauguma PowerShell cmdlet yra tik paprasti bazinių .NET klasių plėtiniai, tačiau su kruopščiai parinktais pavadinimais.

Shell galia, skirta Windows

Neapdorota .NET prieiga

Kitame skalės gale, naudodami PowerShell cmdlet, galite tiesiogiai pasiekti .NET klasės bibliotekas ir naudoti neapdorotus .NET objektus, metodus ir ypatybes. Aukščiau esančioje ekrano kopijoje pamatysite iškvietimą į GetProcesses ( ) metodą sistemoje. Diagnostika. Proceso klasė. Greitai pastebėsite, kad naudodami C# arba VB.NET programą galite gana gerai išversti jos kodą tiesiai į PowerShell scenarijų. GET-MEMBER cmdlet pateiks visą informaciją apie objektus, grąžintus kitais cmdlet arba neapdorotais .NET metodais.

Tokios neapdorotos prieigos naudojimas suteikia du pagrindinius privalumus. Pirma, tai pašalina daugybei įrankių būdingus erdvės apribojimus. Jei galite tai padaryti naudodami .NET, galite tai padaryti naudodami PowerShell ir be daugybės papildomų įrankių, kurių reikia Unix vaikinams (awk, grep, perl ir pan.). Antra, tai leidžia lengvai išplėsti ir kurti .NET Framework: galite rašyti savo cmdlet C# kodu arba naudodami pačią PowerShell. Štai paprasta funkcija, kuri naudoja SYSTEM.NET.DNS klasės RESOLVE metodą, kad nustatytų pagrindinio kompiuterio pavadinimą:

funkcija solve-dn

{

Parametras ($hostname=$(išmeskite „KLAIDA: pateikite pagrindinio kompiuterio pavadinimą“))

return [system.net.dns]::resolve($hostname)

}

Kai naudojate šią funkciją, tai yra cmdlet parašytas scenarijus, jis grąžina nurodyto pagrindinio kompiuterio IPHOST įrašą (arba klaidą), kaip parodyta čia:

PSH [C:\]: $i = solve-dns www.microsoft.com

PSH [C:\]: $I | gm

Tipo pavadinimas: sistema. Grynasis. IPHostEntry

Name MemberType Apibrėžimas

—- ———- ———-

Lygu metodo sistema. Būlio lygybė (objekto obj)

get_AddressList metodo sistema. Grynasis. IP adresas[] get_AddressList()

get_Aliases Method System. String[] get_Aliases()

get_HostName metodo sistema. Eilutė get_HostName()

GetHashCode metodų sistema. Int32 GetHashCode()

GetType metodų sistema. Įveskite GetType()

set_AddressList Method System. Void set_AddressList (IPAddress[] reikšmė)

set_Aliases Method System. Tuščias set_aliases (eilutės[] reikšmė)

set_HostName Method System. Tuščia set_HostName (eilutės vertė)

ToString metodo sistema. String ToString()

Adresų sąrašo nuosavybės sistema. Grynasis. IP adresas[] Adresų sąrašas {gauti; rinkinys;}

Pseudonimų nuosavybės sistema. Styga[] Slapyvardžiai {gauti; rinkinys;}

„HostName“ nuosavybės sistema. String HostName {get; rinkinys;}

PSH [C:\]: $I |FT *automatinis

PSH [C:\]: $I |Fl

Prieglobos pavadinimas: lb1.www.ms.akadns.net

Slapyvardžiai: {www.microsoft.com, toggle.www.ms.akadns.net, g.www.ms.akadns.net}

Adresų sąrašas: {207.46.198.60, 207.46.20.30, 207.46.225.60, 207.46.199.30…}

Taigi sudėtingas funkcijas sujungiate į paprastas ir lengviau naudojamas funkcijas arba cmdlet. „Exchange 2007“ komanda siekia sukurti daugybę pasirinktinių cmdlet, leidžiančių visiškai valdyti „Exchange“ serverį naudojant „PowerShell“ komandinę eilutę.

Patobulinta .NET prieiga

„PowerShell“ suteikia neapdorotą .NET prieigą, bet taip pat suteikia daug galios. Pavyzdžiui, „PowerShell“ prideda palaikymą sudėtingiems objektų tipams, kuriuos dažniausiai naudojate kurdami scenarijus, pvz., [XML] arba [Array], taip pat paprastus tipus, tokius kaip [int] arba [string]. Taigi, kurdami kintamąjį PowerShell, galite griežtai nustatyti, kas leidžiama: