Примеры powershell: Пример кода Windows PowerShell — PowerShell
Содержание
Пример кода Windows PowerShell — PowerShell
Обратная связь
Twitter
LinkedIn
Facebook
Адрес электронной почты
-
Статья -
- Чтение занимает 2 мин
-
Windows PowerShell ® примеры доступны в Windows SDK. в этом разделе содержится пример кода, который содержится в примерах Windows SDK.
Примечание
при установке Windows SDK создается каталог samples , в котором доступны все образцы Windows PowerShell. типичный каталог установки — C:\Program Files\Microsoft sdks \ Windows \v6.0. запустите Windows PowerShell и введите «cd самплес\сисмгмт\повершелл» , чтобы перейти к каталогу Windows PowerShell samples. в этом документе каталог примеров Windows PowerShell называется <PowerShell Samples> .
Пример листинга кода
Пример кода | Описание |
---|---|
Пример кода AccessDbProviderSample01 | это поставщик, описанный в статье создание базового поставщика Windows PowerShell. |
Пример кода AccessDbProviderSample02 | это поставщик, описанный в разделе создание поставщика Windows PowerShellного накопителя. |
Пример кода AccessDbProviderSample03 | это поставщик, описанный в разделе создание поставщика Windows PowerShell элемента. |
Пример кода AccessDbProviderSample04 | это поставщик, описанный в разделе создание поставщика контейнера Windows PowerShell. |
Пример кода AccessDbProviderSample05 | это поставщик, описанный в разделе создание поставщика навигации Windows PowerShell. |
Пример кода AccessDbProviderSample06 | это поставщик, описанный в разделе создание поставщика содержимого Windows PowerShell. |
Примеры кода GetProc01 | Это базовый Get-Process Пример командлета, описанный в разделе Создание первого командлета. |
Примеры кода GetProc02 | Это Get-Process Пример командлета, описанный в разделе Добавление параметров, которые обрабатывают Command-Line входе. |
Примеры кода GetProc03 | Это Get-Process Пример командлета, описанный в разделе Добавление параметров, обрабатывающих входные данные конвейера. |
Примеры кода GetProc04 | Это Get-Process Пример командлета, описанный в статье Добавление незавершенных отчетов об ошибках в командлет. |
Примеры кода GetProc05 | Этот Get-Process командлет аналогичен командлету, описанному в статье Добавление незавершенных отчетов об ошибках в командлет. |
Примеры кода StopProc01 | Это Stop-Process Пример командлета, описанный в разделе Создание командлета, изменяющего систему. |
Примеры кода StopProcessSample04 | Это Stop-Process Пример командлета, описанный в разделе Добавление наборов параметров в командлет. |
Примеры кода Runspace01 | Ниже приведены примеры кода для пространства выполнения, описанного в разделе Создание консольного приложения, выполняющего указанную команду. |
Примеры кода Runspace02 | В этом примере используется класс System. Management. Automation. рунспацеинвоке для Get-Process синхронного выполнения командлета. |
Примеры кода RunSpace03 | Ниже приведены примеры кода для пространства выполнения, описанного в разделе «Создание консольного приложения, запускающего указанный скрипт». |
Примеры кода RunSpace04 | Это пример кода для пространства выполнения, в котором используется класс System. Management. Automation. рунспацеинвоке для выполнения скрипта, который создает завершающую ошибку. |
Примеры кода RunSpace05 | |
Примеры кода RunSpace06 | |
Примеры кода RunSpace07 | |
Примеры кода RunSpace08 | |
Примеры кода RunSpace09 | |
Примеры кода RunSpace10 | Это исходный код для образца Runspace10, который добавляет командлет в System. Management. Automation. пространства. рунспацеконфигуратион , а затем использует измененные сведения о конфигурации для создания пространства выполнения. |
См. также:
Руководство программиста по Windows PowerShell
Пакет SDK для Windows PowerShell
Обратная связь
Отправить и просмотреть отзыв по
Этот продукт
Эта страница
Просмотреть все отзывы по странице
Примеры PowerShell скриптов для Windows
В админиcтрировании всегда есть место творчеству. Хочешь сделать какую-нибудь автоматизацию рутинной задачи? Пожалуйста! Нужно что-то регулярно проверять на активность? Не вопрос! Хочешь обработать какой-нибудь гигантский отчет и вывести только актуальные данные? Тоже можно. Все эти и многие другие задачи лучше всего решать при помощи скриптов, и язык PowerShell в случае с Windows — оптимальный выбор.
Что такое PowerShell и чем он хорош
Пользователи UNIX и Linux, а с какого-то мoмента и macOS привыкли к тому, что под рукой всегда есть Bash — немного старомодное, но универсальное и мощное средство, при помощи которого всего парой строк можно творить удивительные вещи. Прописываешь новый скрипт в cron — и готово, он уже крутится на твоем компьютере или на сервере и незаметно делает что-нибудь полезное.
Возвращаясь в Windows (а без этого иногда никак), понимаешь, что скрипты .bat хоть и хороши, но спасают не всегда: очень уж ограниченны их возможности. И если ты до сих пор считал, что PowerShell — это неведомая штуковина, ради которой нужно что-то там поднимaть и настраивать, то не спеши с выводами — он, если разобраться, совсем неплох.
Windows PowerShell — это расширяемое средство автоматизации с открытыми исходниками, которое состоит из оболочки (командной строки) и скриптового языка. Впервые он был показан в 2003 году (тогда он назывался Monad). PowerShell 2.0 вышел в составе Windows 7 и Windows Server 2008 R2 и с тех пор присутствует в Windows в качестве стандартного компонента. Его даже включили в Windows XP SP3. PowerShell построен на основе .NET Framework и интегрирован с ним. PowerShell может обращаться к COM, WMI и ADSI, а также, конечно же, исполняет консольные команды.
[ad name=»Responbl»]
В общем, «пошик» имеет крепкие связи с продуктами Microsoft, будь то Active Directory или почтовый сервер Exchange. Это позволяет без подключения к оснастке сервера обращаться к ним через консоль и отдaвать команды.
Если раньше ты не интересовался PowerShell, то, скорее всего, у тебя стоит вторая версия. Я рекомендую обновиться как минимум до третьей — она содержит куда больше возможностей и полезных фишек. Если не вдаваться в подробности, то в PowerShell 2.0 входит около десятка модулей и примерно 350 команд, а в PowerShell 3.0 уже около 2300 командлетов из более чем 70 модулей. «Хакер» также писал о том, чем отличается самый новый PowerShell пятой версии из Windows 10.
[ad name=»Responbl»]
Выбираем среду разработки и инструменты
Теперь давай разберемся, где удобнее всего писать код. Можно, конечно, и в «Блокноте», Notepad++ или Sublime. Но это в данном случае не самый грамотный выбор редактора. Лучше всего начинать знакомство с PowerShell, вооружившись идущим в комплекте PowerShell ISE.
PowerShell ISE
Это даже не редактор, а практически полноценная среда разработки. Здесь есть функция IntelliSense, которая позволяет просматривать перечень командлетов и их параметров, переменных, утилит и прочего. Поддерживаются сниппеты, есть возможность расширения нaбора функций за счет различных аддонов. Очень полезно и окно Commands. В нем можно составлять команды в визуальном режиме: выбираешь модуль, находишь нужный командлет и задаешь ему необходимые параметры. Получившуюся команду можно скопировать в консоль или сразу запустить на выполнение. В общем, этакий конструктор для админа. Ну и конечно, есть подсветка синтаксиса, дебаггер и многое другое.
Тем не менее у PowerShell ISE есть и достойные конкуренты. Один из них — Dell PowerGUI.
PowerGUI — это визуальное дополнение к PowerShell. Оно упрощает сборку собственных сценариев до выбора необходимых командлетов. Берешь то, что нужно для решения задачи, и перетаскиваешь части кода, пока не получишь скрипт. Одна из главных фишек PowerGUI — это Power Packs, готовые скрипты, опубликованные сообществом пользователей и выложенные в свобoдный доступ. Тут есть и простенькие команды вроде добавления пoльзователей, и сложные — к примеру, управление свитчами и виртуальными машинaми. Все их легко дополнять и модифицировать в соответствии с нуждами.
powergui
PowerShell Studio 2015 фирмы Sapien — бoлее продвинутая среда, которая рассчитана на совместную разработку одного проекта большим количеством участников. Если ты когда-нибудь имел дело с Visual Studio, то, думаю, заметишь сходство. Среди полезных фишек PowerShell Studio — панель Ribbon, поддержка удаленной отладки, а также функции компилятора, которые позволяют включить скрипты в исполняемые файлы. Есть поддержка разных версий PowerShell.
PowerShell Studio 2015
Стоит упомянуть и Script Browser для Windows PowerShell ISE. Это не среда разработки, но вeсьма интересный инструмент, разработанный в Microsoft. Script Browser открывает доступ к базе готовых скриптов, которые можно использовать в качестве образцов для написания своего кода. А еще эта штука умеет анализировать код, который ты пишешь, и подсказывает, как его улучшить.
Script Browser для Windows PowerShel
Несколько полезных трюков
Разобравшись с редактором, можно приступать к написанию кода. PowerShell — несложный язык, и, я думаю, ты быстро разберешься, что к чему. Команды здесь называются командлетами, и каждый из них состоит из двух частей. Сначала идeт действие, например Get, Set, Add, Invoke, Remove. Затем указывается то, на что действие направлено: Service, VM, AzureAccount, DHCPServerSetting. Каждая часть отделяется от другой дефисом. Получается, к примеру, get-process. Это, кстати, полезная команда, которая выводит список процессов. Скажем, если написать
get-process BadTh*
увидим что-то такое:
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ——— ——— ——— ——— ——— ——— ——— ——— 28 4 -210844 -201128 -163 25.67 2792 BadThread
Теперь можно завершить зависший процесс:
stop-process -id 2792
Хочешь посмотреть права на директорию? Сделать это помогает такой командлет:
E:>Get-Acl N:Data
Можно проcмотреть рекурсивно, правда уже чуть с более сложной логикой:
E:>Get-ChildItem N:Data -recurse | Get-Acl
Если не можешь понять, что делает какой-то командлет, напиши следующее (заменив Get-Process на название неизвестного командлета):
Get-Help -Name Get-Process
Можно также выполнить
Get-Help -Name Get-*
В этом случае будет выведен весь список возможных вариантов.
Теперь давай попробуем узнать что-нибудь о нашем домене через кoнсоль PowerShell. К примеру, давай посмотрим пользовательские аккаунты, у которых установлен неистекающий пароль:
Search-ADAccount -PasswordNeverExpires | FT Name, ObjectClass, UserPrincipalName
Кстати, к каждому полю в окошке опции учетной записи или компьютера можно обратиться и считать данные. Таким образом можно делать целые срезы. Вот, к примеру, запрос на основе данных о телефонных номерах:
Get-AdUser -Filter * -Properties OfficePhone | FT OfficePhone,UserPrincipalName
[ad name=»Responbl»]
PowerShell в сравнении с bat
Иногда задачу можно решить как старым дедовским методом, так и при помощи PowerShell. Я рекомендую не лениться и использовать PS, хотя бы просто потому, что так ты его быстрее изучишь и сможешь применять в более сложных ситуациях. К тому же ты постепeнно оценишь его синтаксис — более элегантный и консистентный. Вот несколько примеров, как вещи делались раньше и как их можно сделать при помощи PowerShell.
Следующая командная строка перезагрузит компьютер с задержкой в десять секунд:
shutdown /r /m \\SERVER1 /f /t 10
На PowerShell это будет выглядеть вот так:
Start-Sleep 10 Restart-Computer -Force -ComputerName SERVER1
Вот так через bat можно перезагрузить службу dnscache (или любую другую):
sc stop dnscache sc start dnscache
В PowerShell это будет так:
Restart-Service dnscache
Мап диска в bat:
Net use L: \\server1\c$
И в PowerShell:
New-PSDrive -name L -psprovider FileSystem -root \\server1\c$
Да, иногда приходится печатать чуть больше букв, но читаются команды PS гораздо лучше. И это не говоря уже про разные новые возможности.
[ad name=»Responbl»]
Удаленное управление с PowerShell
В основном описанные в статье команды выполняются на том же компьютере, на котором они запущены. Проще говоря, команды для управления AD выполнять нужно на сервере, где контроллер домена и установлен, что, согласиcь, на корню рубит удобство и автоматизацию. Для выполнения команд удалeнно, что нам и требуется, надо пользоваться специальными командлетами. К пpимеру, для подключения к удаленному компьютеру и перезапуску там спулера пeчати вводи
Enter-PSSession -ComputerName SRV4 Restart-Service -Name spooler
Более подробно читай тут.
Что почитать еще
Книжек и прочих обучающих материалов по PowerShell огромное количество. Есть как справочники, так и учебные туториалы. Начать можно с сайта Microsoft, где есть неплохие видеоуроки.
В деле немало поможет и книга «Master-PowerShell» Тобиаса Велтнера. В ней автор охватывает многие понятия вроде массивов, хеш-таблиц, конвейеров, объектов, функций, обработки ошибок, регулярных выражeний и так далее. Заодно подробно рассматривается XML и разные аспекты администрирования. Увы, на русский эта книга не переведена.
Из русскоязычных мануалов по PowerShell мне попадался «Windows PowerShell 2.0. Справочник администратора» Уильяма Станека — он весьма неплох.
На «Хабрахабре» есть перевод полезной статьи Джеффери Хикса об администрировании Active Directory при помощи PowerShell.
[ad name=»Responbl»]
Итого
Как видишь, все не так сложно, как кажется на первый взгляд. Главное — четко понимать, что нужно на выходе, и на этом основании выбирать командлеты. А с удобным редактором это делaть куда легче. Доступность разнообразных заготовок может заметно упростить решение повседневных задач администрирования. Знания «пошика» прокачаешь по ходу дела, а это в работе с Windows совсем не лишнее.
Click to rate this post!
[Total: 19 Average: 3.8]
Примеры сценариев для системного администрирования — PowerShell
Редактировать
Твиттер
Фейсбук
Эл. адрес
Работа с объектами
Практическое руководство
- Просмотр структуры объекта
- Выделение частей объекта
- Фильтрация объектов в пайплайне
- Сортировка объектов
- Создание . NET и COM-объектов
- Использование статических классов и методов
- Получение объектов WMI — Get-CimInstance
- Прямое управление элементами
Управление компьютерами
Практическое руководство
- Изменение состояния компьютера
- Сбор информации о компьютерах
- Создание запросов Get-WinEvent с помощью FilterHashtable
Управление процессами и услугами
Практическое руководство
- Управление процессами с помощью командлетов процесса
- Управление услугами
- Управление дисками Windows PowerShell
- Работа с принтерами
- Выполнение сетевых задач
- Работа с установками программного обеспечения
- Декодировать команду PowerShell из запущенного процесса
Работа с выводом
Концепция
- Перенаправление данных с помощью командлетов Out-*
- Использование команд форматирования для изменения вида вывода
Управление дисками и файлами
Практическое руководство
- Управление текущим местоположением
- Работа с файлами и папками
- Работа с папками файлов и ключами реестра
- Работа с записями реестра
- Работа с ключами реестра
Создание элементов пользовательского интерфейса
Практическое руководство
- Создание пользовательского поля ввода
- Создание графического средства выбора даты
- Несколько списков выбора
- Выбор элементов из списка
Просмотр структуры объекта Получить член — PowerShell
Обратная связь
Редактировать
Твиттер
Фейсбук
Эл. адрес
- Статья
- 2 минуты на чтение
Поскольку объекты играют центральную роль в PowerShell, существует несколько встроенных команд
предназначен для работы с произвольными типами объектов. Наиболее важной из них является команда Get-Member
.
Простейший способ анализа объектов, возвращаемых командой, — передать вывод
эта команда на Командлет Get-Member
. Командлет Get-Member
показывает официальное имя
тип объекта и полный список его членов. Количество возвращаемых элементов может
иногда быть подавляющим. Например, объект процесса может иметь более 100 членов.
Чтобы просмотреть все элементы объекта Process и просмотреть выходные данные, чтобы просмотреть их все, введите:
Get-Process | Получить член | Внешний хост-пейджинг
Вывод этой команды будет выглядеть примерно так:
Тип: System. Diagnostics.Process Имя MemberType Определение ---- ---------- ---------- Ручки AliasProperty Handles = Handlecount Имя Имя Псевдонима = ИмяПроцесса NPM AliasProperty NPM = NonpagedSystemMemorySize PM AliasProperty PM = PagedMemorySize VM AliasProperty VM = VirtualMemorySize WS AliasProperty WS = Рабочий набор Метод add_Disposed System.Void add_Disposed(Событие... ...
Мы можем сделать этот длинный список информации более удобным для использования, отфильтровав элементы, которые мы хотим видеть.
Команда Get-Member
позволяет перечислить только элементы, являющиеся свойствами. Существует несколько форм
характеристики. Командлет отображает свойства любого типа, если для параметра MemberType установлено значение
значение Свойства . Результирующий список по-прежнему очень длинный, но более управляемый:
Get-Process | Get-Member -MemberType Свойства
TypeName: System.Diagnostics.Process Имя MemberType Определение ---- ---------- ---------- Ручки AliasProperty Handles = Handlecount Имя Имя Псевдонима = ИмяПроцесса . .. ExitCode Свойство System.Int32 ExitCode {get;} ... Обработать свойство System.IntPtr Обработать {get;} ... CPU ScriptProperty System.Object CPU {get=$this.Total... ... Path ScriptProperty System.Object Path {get=$this.Main... ...
Примечание
Допустимые значения MemberType: AliasProperty, CodeProperty, Property, NoteProperty,
ScriptProperty, Properties, PropertySet, Method, CodeMethod, ScriptMethod, Methods,
ParameterizedProperty, MemberSet и все.
Для процесса существует более 60 свойств. Причина, по которой PowerShell часто показывает только несколько
свойств любого хорошо известного объекта заключается в том, что демонстрация всех их привела бы к неуправляемому
объем информации.
Примечание
PowerShell определяет, как отображать тип объекта, используя информацию, хранящуюся в XML
файлы, имена которых заканчиваются на .format.ps1xml. Данные форматирования для объектов процесса, которые
Объекты .NET System.Diagnostics.Process хранятся в DotNetTypes.