Начална » как да » Geek School Обучение как да използвате обекти в PowerShell

    Geek School Обучение как да използвате обекти в PowerShell

    Разбирането на обектите е една от основните концепции за „получаване“ на PowerShell. Присъединете се към нас, докато изследваме обекти и как те правят PowerShell по-добре от всеки друг черупки от днес.

    Прочетете предишните статии от поредицата:

    • Научете как да автоматизирате Windows с PowerShell
    • Научете се да използвате Cmdlets в PowerShell

    Очаквайте останалата част от поредицата цяла седмица.

    обекти

    Замисляли ли сте се някога какво определя PowerShell освен традиционната Linux обвивка като Bash, или дори командния ред? Отговорът е много прост: традиционните текстове за извеждане на черупки, което прави трудно да се правят неща като форматиране и филтриране. Разбира се, има инструменти, които да ви помогнат да свършите работата (sed и grep идват на ум), но в края на деня, ако искате да направите какъвто и да е вид тежък текстов разбор, трябва да знаете редовни изрази като отзад.

    PowerShell се възползва от основната .Net рамка и използва различен подход, използвайки обекти вместо текст. Обектите са просто представяне на нещо. Те са сбор от части и действия, които да ги използват. Нека разгледаме частите на велосипеда и как можем да ги използваме.

    Обектите в .Net са почти същите, с изключение на две малки разлики: "Частите" се наричат Имоти и се наричат ​​“Инструкции” методи. Ако искаме да представим услуга на Windows като обект, може да решим, че е подходящо да я опишем, като използваме три свойства: Име на услугата, Състояние и Описание. Също така трябва да си взаимодействаме с услугата, така че можем да дадем на обекта метод Start, Stop и Pause.

    Можете да видите свойствата и методите на обекта, като ги прехвърлите в командлета Get-Member. Обектите, които изходите на кратки команди на PowerShell са до голяма степен подчинени на типове от .Net рамката, но можете да създавате свои собствени обекти, ако трябва да използвате език като C # или да използвате типа PSObject..

    Тръбопроводът

    Има много Linux обвивки с тръбопровод, което ви позволява да изпратите текста, който една команда извежда като вход към следващата команда в тръбопровода. PowerShell поема това към следващото ниво, като ви позволява да вземете обектите, които един cmdlet извежда, и да ги предавате като вход към следващия cmdlet в тръбопровода. Номерът е да се знае какъв тип обект се връща cmdlet, което е много лесно, когато се използва командлета Get-Member.

    Get-Service | Get-държава

    По причини, които не попадат в обхвата на тази статия, свойствата и методите са съвместно наричани членове на класа, което обяснява защо използвате командлета Get-Member, за да получите списък на всички методи и свойства на даден обект. Командлетът Get-Member също така връща друга важна част от информацията - основния тип обект. В горната снимка на екрана можем да видим, че Get-Service връща обекти от типа:

    System.ServiceProcess.ServiceController

    Тъй като PowerShell се занимава с обекти, а не с текст, не всички cmdlet могат да бъдат свързани помежду си с помощта на тръбопровода [1]. Това означава, че трябва да намерим кратка команда, която иска да приеме обект System.ServiceProcess.ServiceController от тръбопровода..

    Get-Command -ParameterType System.ServiceProcess.ServiceController

    Забележете, че има cmdlet, наречен Stop-Service; нека да разгледаме помощта за него.

    Вземи-Помощ-Stop Stop-Service

    Изглежда, че параметърът InputObject приема масив от обекти ServiceController като вход. Обикновено, ако видите параметър, наречен InputObject, той ще приеме входа от тръбопровода, но само за да сме сигурни, че ще разгледаме пълната помощ за този параметър..

    Get-Help -Имете Stop-Service-Full

    Нашите подозрения бяха правилни. Така че в този момент знаем следното:

    • Get-Service връща ServiceController обекти
    • Stop-Service има параметър, наречен InputObject, който приема един или повече ServiceControllers като вход.
    • Параметърът InputObject приема входа на тръбопровода.

    Чрез тази информация бихме могли да направим следното:

    Get-Service-име "Apple мобилно устройство" | Стоп-Service

    Това е всичко за това време хора. Следващия път ще разгледаме как можем да форматираме, филтрираме и сравняваме обекти в тръбопровода.

    Домашна работа

    • Прочетете на тръбопровода Обект

    Ако имате някакви въпроси, можете да ме чуете @taybgibb, или просто да оставите коментар.