18Aug
Pochopení objektů je jedním ze základních pojmů "získávání" PowerShell. Připojte se k nám, když prozkoumáme objekty a jak dělají PowerShell lepší než jakákoli jiná shell, která je tam dnes.
Ujistěte se, že jste si přečetli předchozí články v sérii:
- Naučte se automatizovat systém Windows s PowerShell
- Naučte se používat cmdlety v PowerShell
A zůstaňte ladící po zbytek série celý týden. Objekty
Už jste někdy přemýšleli, co dělá PowerShell od tradičního Linuxového shellu jako Bash, nebo dokonce příkazového řádku starší?Odpověď je opravdu jednoduchá: textový výstup tradiční skořepiny, což ztěžuje práci jako formátování a filtrování.Samozřejmě existují nástroje, které vám pomohou dostat se do práce( sed a grep vám přijdou na mysl), ale na konci dne, pokud chcete dělat jakýkoli druh těžkého textu parsování, musíte znát regulární výrazy, jako jezadní část ruky.
PowerShell využívá základní rámec. Net a používá jiný přístup s použitím objektů namísto textu. Objekty jsou jen reprezentací něčeho. Jedná se o sbírku částí a akcí, které je mají používat. Podívejme se na části kola a jak je můžeme použít.
Objekty v. Net jsou hodně stejné, s výjimkou dvou malých rozdílů: "Části" se nazývají vlastnosti a "Instrukce" se nazývají metody .Pokud bychom chtěli představit službu Windows jako objekt, mohli bychom se rozhodnout, že je vhodné ji popsat pomocí tří vlastností: název služby, stav a popis. Také potřebujeme interakci se službou, takže můžeme danému objektu dát metodu Start, Stop a Pauza.
Vlastnosti a metody objektu můžete zobrazit tak, že jej předáte cmdlet Get-Member. Objekty, ve kterých jsou výstupy PowerShell cmdlet z velké části základními typy z. Net framework, ale můžete vytvořit vlastní objekty, pokud potřebujete použít jazyk jako C # nebo použít typ PSObject.
Pipeline
Existuje spousta linuxových shellů s potrubím, které vám umožňují poslat text, který jeden příkaz vystupuje jako vstup do dalšího příkazu v potrubí.PowerShell převezme tuto úroveň na další úroveň tím, že vám umožní vzít objekty, které mají jeden výstup cmdlet a předávat je jako vstup do dalšího cmdlet v potrubí.Trik je vědět, jaký typ objektu se vrací cmdlet, což je opravdu snadné při použití rutiny Get-Member.
Get-Service |Get-Member
Z důvodů mimo rámec tohoto článku se vlastnosti a metody společně nazývají členové třídy, což vysvětluje, proč používáte Get-Member cmdlet, abyste získali seznam všech metod a vlastností objektu. Však cmdlet Get-člen také vrací další důležitou informaci, podkladový typ objektu. Na výše uvedené obrazovce vidíme, že služba Get-Service vrací objekty typu:
System. ServiceProcess. ServiceController
Vzhledem k tomu, že PowerShell se zabývá objekty a nikoli textem, nelze všechny rutiny propojit pomocí potrubí [1].To znamená, že musíme najít cmdlet, který by chtěl přijmout objekt System. ServiceProcess. ServiceController z potrubí.
Get-Command -ParameterType System. ServiceProcess. ServiceController
Všimněte si, že existuje cmdlet nazvaný Stop-Service;podívejme se na pomoc za to.
Get-Help - Zastavit službu
Zdá se, že parametr InputObject zachycuje pole objektů ServiceController jako vstup. Obvykle se zobrazí parametr nazvaný InputObject, který bude akceptovat vstup z Pipeline, ale určitě se podíváme na úplnou pomoc daného parametru.
Get-Help -Name Stop-Service -Full
Naše podezření byla správná.Takže v tomto okamžiku víme následující:
- Get-Service vrátí objekty ServiceController
- Stop-Service má parametr nazvaný InputObject, který přijímá jeden nebo více ServiceControllers jako vstup.
- Parametr InputObject přijímá vstup potrubí.
Pomocí těchto informací bychom mohli udělat následující:
Get-Service - pojmenujte 'Apple Mobile Device' |Stop-Service
To je vše pro tyhle lidi. Příště se podíváme na to, jak můžeme formátovat, filtrovat a porovnávat objekty v potrubí.
Domácí úkol
- Přečtěte si na oběžné dráze Object
Pokud máte nějaké dotazy, můžete mi píše @taybgibb, nebo zanechte komentář.