Геек школа ради са колекцијама у ПоверСхелл-у
Пошто се ПоверСхелл заснива на .Нет Фрамеворк-у и укључује разне друге технологије као што су ВМИ и ЦИМ, увек постоји више од једног начина да се оствари иста ствар. Придружите нам се на овом кратком посту гдје учимо како одабрати најбољи начин за извршење наших задатака.
Обавезно прочитајте претходне чланке из серије:
- Сазнајте како да аутоматизујете Виндовс помоћу ПоверСхелл-а
- Учење коришћења команди у ПоверСхелл-у
- Учење како користити објекте у ПоверСхелл-у
- Учење обликовања, филтрирања и упоређивања у програму ПоверСхелл
- Научите да користите даљински рад у ПоверСхелл-у
- Коришћење ПоверСхелл-а за добијање информација о рачунару
И останите у току са остатком серије целу недељу.
Кориштење пакетних наредби
Раније у серији, када смо вас упознали са цевоводом, показали смо вам како можете узети објекте које један цмдлет излази и проследити их као улаз у други цмдлет користећи нешто слично овоме:
Гет-Процесс -Наме нотепад | Стоп-Процесс
Ово би убило сваки процес са именом "нотепад". Али ви се вероватно питате како је ПоверСхелл у стању да убије сваку инстанцу белешке само једном командом. Одговор лежи у помоћи Стоп-Процесс цмдлет команде.
хелп Стоп-Процесс-Фулл
Ако погледате последњу линију кода у одељку синтаксе, можете видети да параметар ИнпутОбјецт прихвата објекат типа Процесс [], и кад год видите тип праћен са два углата у загради, то значи да параметар прихвата један или више претходног типа. У том случају, прихвата један или више процесних објеката. Технички, рекли бисмо да цмдлет ИнпутОбјецт прихвата процес арраи. Сваки пут када имате цмдлет који подржава такве операције, користите га. Ово је избор број један.
Коришћење ВМИ
Иако ВМИ није најбоља технологија коју треба испоручити из Мицрософт ХК-а, она се појављује на другом месту на листи како радити са колекцијама објеката. Могли бисмо лако да добијемо листу покренутих процеса из класе Вин32_Процесс на следећи начин:
Гет-ВмиОбјецт -Цласс Вин32_Процесс
Будући да ВМИ упит враћа своју врсту објекта, мораћете да тражите метод који може да заустави процес, тако да омогућава цевима да добију члан.
Гет-ВмиОбјецт -Цласс Вин32_Процесс | Гет-Мембер
Изгледа да је најближа ствар коју треба зауставити метода завршавања, тако да она мора бити она. Да бисте позвали метод на ВМИ објекту, једноставно га преусмерите у Инвоке-ВмиМетход и наведите име методе.
Гет-ВмиОбјецт -Цласс Вин32_Процесс -Филтер “наме = 'нотепад.еке'” | Инвоке-ВмиМетход-Наме Терминате
Одлично, то је урадило трик. Кад год добијете РетурнВалуе од 0 у ВМИ-ју, само запамтите да је команда извршена успјешно.
Енумератион
Ако не успете да примените друга два метода, ако морате нешто да урадите са групом објеката, можете набројати цео објекат и деловати на сваки појединачни објекат. Прво морате да пронађете метод који ћете користити да бисте зауставили један процес.
Гет-Процесс | Метод Гет-Мембер-МемберТипе
Савршено, изгледа да можемо да користимо методу убиства, а затим да уђемо у објекат за убацивање свих ствари.
Гет-Процесс -Наме нотепад | ФорЕацх-Објецт -Процесс $ _.
Овде смо узели све процесне објекте које је вратио Гет-Процесс и проследио их цмдлету ФорЕацх-Објецт. Слично као и цмдлет Вхере-Објецт, представили смо сваки објекат у цевоводу са $ _ који смо могли да позовемо на Килл () методу на. Уз све то што је речено и учињено, набрајање збирке је много спорији од горе наведених метода и требало би да се користи само као последњи резултат.
Сажетак
Цхоице Оне
Гет-Процесс -Наме нотепад | Стоп-Процесс
Цхоице Тво
Гет-ВмиОбјецт -Цласс Вин32_Процесс -Филтер “наме = 'нотепад.еке'” | Инвоке-ВмиМетход-Наме Терминате
Избор три
Гет-Процесс -Наме нотепад | ФорЕацх-Објецт -Процесс $ _.
То је све за ово време, видимо се следеће недеље за још ПоверСхелл забаве.