Shell Power pre Windows

Ak to všetko znie jednoducho, je to tak, ale Microsoftu trvalo niekoľko rokov, kým sa dostal tak ďaleko. Kľúčovým aspektom dizajnu PowerShell je prenos a využitie znalostí; to znamená, že znalosť jedného cmdlet vám pomôže pochopiť, čo robí druhý. Väčšina cmdletov PowerShell sú len jednoduché rozšírenia základných tried .NET, ale so starostlivo vybranými názvami.

Shell Power pre Windows

Raw .NET prístup

Na druhom konci škály používania cmdletov PowerShell môžete siahnuť priamo do knižníc tried .NET a používať nespracované objekty, metódy a vlastnosti .NET. Na snímke obrazovky vyššie uvidíte volanie metódy GetProcesses() v systéme. Diagnostika. Procesná trieda. Rýchlo zistíte, že ak si vezmete program v C# alebo VB.NET, môžete jeho kód celkom dobre preložiť priamo do skriptu PowerShell. Rutina cmdlet GET-MEMBER vráti všetky podrobnosti o objektoch vrátených inými cmdletmi alebo nespracovanými metódami .NET.

Používanie takéhoto surového prístupu prináša dve hlavné výhody. Po prvé, odstraňuje obmedzenia voľného priestoru typické pre toľko nástrojov. Ak to môžete urobiť v .NET, môžete to urobiť v PowerShell a bez nespočetných ďalších nástrojov, ktoré potrebujú chlapci z Unixu (awk, grep, perl atď.). Po druhé, uľahčuje rozšírenie a budovanie na .NET Framework: svoje vlastné cmdlety môžete písať buď v kóde C#, alebo pomocou samotného PowerShell. Tu je jednoduchá funkcia, ktorá používa metódu RESOLVE tried SYSTEM.NET.DNS na rozlíšenie názvu hostiteľa:

funkcie resolve-dns

{

Param ($hostname=$(prehodiť „CHYBA: Zadajte názov hostiteľa“))

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

}

Keď použijete túto funkciu, v skutočnosti je to skript napísaný cmdlet, vráti položku IPHOST pre daného hostiteľa (alebo chybu), ako je znázornené tu:

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

PSH [C:\]: $I | gm

TypeName: System. Net. IPHostEntry

Názov Definícia MemberType

—- ———- ———-

Systém rovnosti metód. Boolean rovná sa (objekt objektu)

get_AddressList Method System. Net. IPAddress[] get_AddressList()

get_Aliases Method System. String[] get_Aliases()

get_HostName Method System. Reťazec get_HostName()

Systém metód GetHashCode. Int32 GetHashCode()

Systém metód GetType. Zadajte GetType()

set_AddressList Method System. Void set_AddressList (hodnota IPAddress[])

set_Aliases Method System. Void set_Aliases (hodnota reťazca[])

set_HostName Method System. Void set_HostName (hodnota reťazca)

Systém metódy ToString. String ToString()

Systém vlastníctva zoznamu adries. Net. Adresa IP[] Zoznam adries {get; nastaviť;}

Systém aliasov. Reťazec[] Aliasy {get; nastaviť;}

Systém vlastností názvu hostiteľa. Reťazec Názov hostiteľa {get; nastaviť;}

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

PSH [C:\]: $I |Fl

Názov hostiteľa: lb1.www.ms.akadns.net

Aliasy: {www.microsoft.com, toggle.www.ms.akadns.net, g.www.ms.akadns.net}

Zoznam adries: {207.46.198.60, 207.46.20.30, 207.46.225.60, 207.46.199.30…}

Komplexné funkcie tak zabalíte do jednoduchých a ľahko použiteľných funkcií alebo cmdletov. Tím Exchange 2007 využíva prístup k vytváraniu obrovského množstva vlastných cmdletov, ktoré vám umožňujú spravovať server Exchange úplne z príkazového riadku PowerShell.

Vylepšený prístup .NET

PowerShell umožňuje nespracovaný prístup .NET, ale navyše poskytuje značný výkon. PowerShell napríklad pridáva podporu pre komplexné typy objektov, ktoré najčastejšie používate pri skriptovaní – napríklad [XML] alebo [Array] – ako aj pre jednoduché typy ako [int] alebo [string]. Preto pri vytváraní premennej v PowerShell môžete byť prísni, pokiaľ ide o to, čo je povolené: