Примеры 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

Редактировать

Твиттер

LinkedIn

Фейсбук

Эл. адрес

Работа с объектами

Практическое руководство

  • Просмотр структуры объекта
  • Выделение частей объекта
  • Фильтрация объектов в пайплайне
  • Сортировка объектов
  • Создание . NET и COM-объектов
  • Использование статических классов и методов
  • Получение объектов WMI — Get-CimInstance
  • Прямое управление элементами

Управление компьютерами

Практическое руководство

  • Изменение состояния компьютера
  • Сбор информации о компьютерах
  • Создание запросов Get-WinEvent с помощью FilterHashtable

Управление процессами и услугами

Практическое руководство

  • Управление процессами с помощью командлетов процесса
  • Управление услугами
  • Управление дисками Windows PowerShell
  • Работа с принтерами
  • Выполнение сетевых задач
  • Работа с установками программного обеспечения
  • Декодировать команду PowerShell из запущенного процесса

Работа с выводом

Концепция

  • Перенаправление данных с помощью командлетов Out-*
  • Использование команд форматирования для изменения вида вывода

Управление дисками и файлами

Практическое руководство

  • Управление текущим местоположением
  • Работа с файлами и папками
  • Работа с папками файлов и ключами реестра
  • Работа с записями реестра
  • Работа с ключами реестра

Создание элементов пользовательского интерфейса

Практическое руководство

  • Создание пользовательского поля ввода
  • Создание графического средства выбора даты
  • Несколько списков выбора
  • Выбор элементов из списка

Просмотр структуры объекта Получить член — PowerShell

Обратная связь

Редактировать

Твиттер

LinkedIn

Фейсбук

Эл. адрес

  • Статья
  • 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.