18Aug

Geek School: Učení o používání objektů ve formátu PowerShell

click fraud protection

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.

instagram viewer

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ář.