sergey vasin

The IT blog

Weekend Scripter: Запускаем все командлеты в модуле – Hey, Scripting Guy! Blog

leave a comment »

Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает о том, как запустить все командлеты «Get», входящие в определенный модуль Windows PowerShell.

Пока мы едем на поезде, у меня есть отличный шанс поиграться с Windows PowerShell. Одна из вещей, которые меня поражают в Windows 8 с PowerShell 3.0 – это огромное число командлетов. Я могу сказать, что пока я всего лишь успел познакомиться с небольшой их частью, а ведь я начал работать с Windows PowerShell 3.0 еще до того, как он стан публично доступен в виде беты или community preview. В частности, мне особенно интересны командлеты (функции), входящие в модуль NetAdapter. И я больше не могу противостоять желанию запустить их все.

Я признаю, что это не самое полезное использование блога Hey, ScriptingGuy! Но все таки сейчас уикенд. Кроме того, у вас могут появиться некоторые идеи по поводу исследования обилия командлетов (функций) в Windows 8. Я также признаю, что команда разработки опубликовала пост о том, что командлет Invoke-Expression считается опасным… Но все таки, я играюсь с Windows PowerShell на моем ноутбуке на поезде, который несется по направлению к Варшаве, Польша. И хотя то что я делаю не является примером для подражания в вопросах управления сетью, это должно быть весело.

Итак, покончим со вступлением…

Для начала, получим все командлеты “Get” в модуле

Первое, что мне нужно сделать – это получить все командлеты «Get», входящие в модуль. Я не хочу запускать командлеты «Set», поскольку, во-первых, они могут не работать без указания определенных параметров, во-вторых, они все таки могут работать и изменить тучу настроек на моем ноутбуке. Поэтому, я остановлюсь на командлетах «Get», поскольку они только выводят информацию. Вот команда для отображения всех командлетов «Get» из модуля NetworkAdapter (gcm – это алиас для командлета Get-Command):

gcm -Module netadapter -Verb get

Запускаем команды через конвейер

Что хорошо в командлете Invoke-Expression, это то, что он позволяет мне создавать команды на лету и, соответственно, исполнять их. Invoke-Expression получает строку и запускает ее как команду – это очень удобно, однако вместе с тем и довольно опасно, поскольку он позволяет запустить любую случайную команду, переданную ему в качестве строки.

Итак, я собираюсь получить все командлеты «Get», входящие в модуль NetworkAdapter, и затем запустить каждый их них.

gcm -Module netadapter -Verb get | % { Invoke-expression $_.name }

Команды выводит множество информации. Команда и один из экранов с информацией приведены на рисунке.

01

Так как я не могу читать со скоростью, с какой информация появляется на экране, я решил отправить эту информацию в текстовый файл. Измененная команда:

gcm -Module netadapter -Verb get | % { Invoke-expression $_.name } >> c:\fso\netadapter.txt ; notepad c:\fso\netadapter.txt

После выполнения команды в каталоге c:\fsoпоявится файл netadapter.txt. Он приведен на рисунке.

 02

Автор:

Ed Wilson, Microsoft Scripting Guy

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2012/12/01/weekend-scripter-run-all-cmdlets-from-a-module.aspx


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Written by Сергей Васин

Декабрь 8, 2012 в 13:23

Опубликовано в HeyScriptingGuyBlog, PowerShell

Tagged with

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s