Разбирането на обекти е една от основните понятия за "получаване" на PowerShell. Присъединете се към нас, докато изследваме обектите и как те правят PowerShell по-добре от всяка друга черупка там.
Не забравяйте да прочетете предишните статии в серията:
И останете настроени за останалата част от серията през цялата седмица.
Били ли сте някога се чудили какво прави PowerShell различен от традиционната черупка на Linux като Bash или дори командата за наследство? Отговорът е наистина прост: текстът на традиционните черупки извежда, което затруднява работата по форматиране и филтриране. Разбира се, има инструменти, които да ви помогнат да постигнете тази задача, но в края на краищата, ако искате да правите всякакъв вид тежък текстов анализ, трябва да знаете регулярни изрази като отзад на ръката си.
PowerShell се възползва от основната рамка .Net и използва различен подход, използвайки обекти вместо текст. Обектите са само изображение на нещо. Те са съвкупност от части и действия, които да ги използват. Нека да разгледаме частите на велосипеда и как можем да ги използваме.
Обектите в .Net са почти еднакви, с изключение на две малки разлики: се наричат "части" Имоти и се наричат "инструкциите" методи, Ако искаме да представляваме услуга на Windows като обект, можем да решим, че е подходящо да я опишем с помощта на три свойства: Име на услугата, състояние и описание. Също така трябва да взаимодействаме с услугата, така че може да дадем на обекта метод "Старт", "Стоп" и "Пауза".
Можете да видите свойствата и методите на обекта, като ги предадете на cmdlet на Get-Member. Обектите, които извеждат команди на PowerShell, са до голяма степен подлежащи на типове от .Net framework, но можете да създадете свои собствени обекти, ако трябва да използвате език като C # или да използвате типа PSObject.
Има много Linux черупки с тръбопровод, което ви позволява да изпращате текста, който една команда извежда като вход за следващата команда в тръбопровода. PowerShell отвежда това до следващото ниво, като ви позволява да вземете предметите, които една cmdlet извежда и да ги предаде като вход за следващата cmdlet в тръбопровода. Номерът е знанието за какъв тип обект се връща cmdlet, което е много лесно при използване на cmdlet на Get-Member.
Получаване на услуга | Get-държава
По причини извън обхвата на тази статия, свойствата и методите се наричат общо членове на класа, което обяснява защо използвате командата Get-Member cmdlet, за да получите списък на всички методи и свойства на даден обект. Въпреки това, cmdlet на Get-Member също връща друга важна информация, основният тип обект. В горната екранна снимка можем да видим, че Get-Service връща обекти от типа:
System.ServiceProcess.ServiceController
Тъй като PowerShell се занимава с обекти, а не с текстове, не всички команди могат да бъдат свързани заедно чрез тръбопровода [1]. Това означава, че трябва да намерим cmdlet, който иска да приеме обект System.ServiceProcess.ServiceController от тръбопровода.
Get-Command -ParameterType System.ServiceProcess.ServiceController
Забележете, че има cmdlet, наречен Stop-Service; нека да разгледаме помощта за него.
Получаване на помощ - Намерете услугата за спиране
Изглежда, че параметърът InputObject взима масив от обекти на ServiceController като вход. Обикновено, ако видите параметър, наречен InputObject, той ще приеме вход от тръбопровода, но само за да сме сигурни, че нека да разгледаме пълната помощ за този параметър.
Get-Help -Най-Stop-Service-Пълно
Нашите подозрения бяха верни. Така че в този момент знаем следното:
Използвайки тази информация, можем да направим следното:
Get-Service-Наименование "Apple Mobile Device" Стоп-Service
Това е всичко за това време хора. Следващият път ще разгледаме как можем да форматираме, филтрираме и сравняваме обекти в тръбопровода.
Ако имате някакви въпроси, можете да ми tweet @ taibbibb или просто да оставите коментар.