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