Domovská » jak » Geek School Učení, jak používat objekty v PowerShell

    Geek School Učení, jak používat objekty v PowerShell

    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 tam venku.

    Ujistěte se, že jste si přečetli předchozí články v sérii:

    • Naučte se automatizovat systém Windows pomocí nástroje PowerShell
    • Naučte se používat Cmdlets v PowerShell

    A zůstaňte v klidu po zbytek série celý týden.

    Objekty

    Přemýšleli jste někdy o tom, co dělá PowerShell od tradičního Linuxového shellu, jako je Bash, nebo dokonce příkazu příkazu starší? Odpověď je opravdu jednoduchá: tradiční výstupní textový obal, 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 přijít 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 je zadní straně ruky.

    PowerShell využívá základní rámec .Net a zaujme jiný přístup pomocí 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" jsou volány vlastnosti a "pokyny" jsou volány 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, a proto bychom mohli 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.

    Potrubí

    Existuje spousta linuxových shellů s potrubím, které vám umožňují odeslat 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 | Získejte-člen

    Z důvodů, které nespadají do rozsahu 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 část informací, podkladový typ objektu. Na výše uvedené obrazovce můžeme vidět, že služba Get-Service vrací objekty typu:

    System.ServiceProcess.ServiceController

    Vzhledem k tomu, že PowerShell se zabývá objekty, nikoliv textem, nelze všechny rýpadla propojit pomocí potrubí [1]. To znamená, že musíme najít cmdlet, který chce 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 - Zastavte službu

    Zdá se, že parametr InputObject zachycuje pole objektů ServiceController. Obvykle se zobrazí parametr nazvaný InputObject, který přijme vstup z Pipeline, ale jen aby se ujistil, že se podíváme na úplnou nápovědu pro daný parametr.

    Získejte-Nápověda -Jsem Stop-Service -Full

    Naše podezření bylo správné. Takže v tomto okamžiku zná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 - Jmeno "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í práce

    • Přečtěte si článek o potrubí objektu

    Máte-li jakékoli dotazy, můžete mi píše @taybgibb, nebo zanechte komentář.