powershell - Передовые методы разработки командлетов Powershell. Powershell командлеты


Введение в Windows PowerShell, что такое командлеты

Windows PowerShell является одним из важных инструментов в руках системного администратора Windows. PowerShell является мощным инструментом, которым не стоит пренебрегать. Данная статья ставит своей целью обеспечить базовые навыки работы с Windows PowerShell.

PowerShell являет собой нечто большее, чем просто оболочку командной строки. Первая версия PowerShell появилась в 2006 году, причиной его разработки была примитивность классической командной строки Windows, не позволявшей выполнять сложные алгоритмы.

Windows PowerShell предустановлен в системах Windows 7, 8, 8.1 и Windows Server 2008 R2, 2012 R2, а также может быть добавлен в Windows XP SP3, Vista и Windows Server 2003 SP2. Интерфейс PowerShell напоминает хорошо знакомый интерфейс командной строки.

Интерфейс Windows PowerShell

Как было сказано выше, интерфейсом командной строки дело не ограничивается. PowerShell предоставляет системному администратору собственный язык сценариев, позволяющий автоматизировать сложные действия.

Выполняемые в PowerShell команды могут быть в виде командлетов, функций, сценариев и внешних исполняемых файлов.

Командлеты — это новый тип команд, встроенный в PowerShell. Команды этого типа компилируются в dll-библиотеки и подгружаются к процессу PowerShell во время его запуска. Сами по себе командлеты как приложения не запускаются.

Имена командлетов соответствуют шаблону «глагол-существительное». Глагол описывает действие, которое мы хотим совершить, а существительное — объект, над которым будет совершаться действие. Например, чтобы очистить экран консоли, требуется ввести команду Clear-Host. Вы можете просмотреть доступные команды, введя в консоли Get-Command.

Командлеты могут иметь параметры. В общем виде это выглядит так:

имя_командлета -параметр1 -параметр2 аргумент1 аргумент2

Аргументы это параметры не имеющие имен.

Как это работает? Например, у нас есть команда dir, которая выводит содержимое каталога.

Пример работы команды dir

Допустим, я потерял определенный файл. Пусть это будет файл справки по Photoshop. Я точно помню, что в имени файла содержится «photoshop», и что это pdf-файл. Как мне помнится, файл лежит в этом каталоге. Я могу вывести список всех файлов каталога как в примере выше и искать файл вручную. А могу применить параметр -filter, который выведет только те файлы, которые соответствуют определенному аргументу. В качестве аргумента будет *photoshop*.pdf. Звездочки вокруг слова «photoshop» стоят потому что я не помню точного имени файла и указываю PowerShell на то, что перед и после «photoshop» могут стоять любые символы. Так же я указываю искать именно pdf-файл.

Итак, искомый файл нашелся. В общем виде командлетов было обозначено, что один командлет может иметь несколько параметров. В свою очередь, параметры не всегда имеют аргументы.

Немного усложним наш пример. Скажем, теперь мне нужно найти книгу Кристофера Доугерти. Команда dir -filter *доугерти*.pdf мне ничего не дала. Это значит что книги в данном каталоге нет, но я точно помню, что она где-то здесь, очевидно, в подкаталогах. Для того, чтобы искать и в подкаталогах, добавим параметр -recurse.

Поиск займет немного больше времени, зато искомая книга будет найдена.

Как видим, параметр -recurse не содержит аргумента. Сами по себе параметры могут стоять в любом порядке, главное четко соблюдать логику, когда необходимый аргумент следует после того параметра, для которого он предназначен. Таким образом, команда dir -filter *доугерти*.pdf -recurse сработает точно так же как и dir -recurse -filter *доугерти*.pdf.

Имена параметров можно писать в сокращенном виде, что довольно удобно при повседневной работе с командной строкой. Сокращение должно быть понятно интерпритатору, т.е. не допускать двояких толкований. Например, параметр -recurse мы можем сократить до простого -r, а сокращение -filter до -f вызовет ошибку, т.к. есть еще параметр -force. В таком случае можно сократить -filter до -fi.

Итак, мы получили представление о командлетах. В следующий раз поговорим о функциях.

webistore.ru

Основные командлеты Windows PowerShell

Documents войти Загрузить ×
  1. Технологии
  2. Информатика
advertisement advertisement
Related documents
Windows Powershell — RU
Feature Comparison: Windows Server
Андреев А.А. Программные средства для интернет
При борьбе с трояном Trojan
Установка операционной системы Windows
os_theor1x
Этап 1. Настройка локальной среды
ASSEMBLER &amp
BlackBox Component Builder: линковка и Линукс
Функциональность Microsoft Office 365
Настройка служб SharePoint
Microsoft Exchange Online Archiving Service Description
Скачать

studydoc.ru

Топ 7 Powershell командлетов для новичков / Блог компании Netwrix / Хабр

Наверное, все слышали о PowerShell, но наверняка не всем довелось с ним работать. Для тех, кто только начинает прокладывать свой путь в дебри PowerShell, мы приводим перевод поста, вышедшего на портале 4sysops.com. В нем рассказано о 7 командах, которые помогут тем, кто только начал работать с PowerShell. За подробностями – добро пожаловать под кат.
GET-HELP
Самый первый и самый главный командлет PowerShell – вызов справки. С помощью командлета Get-Help можно проверить синтаксис, посмотреть примеры использования и детальное описание параметров любого PowerShell командлета. Этот командлет примечателен тем, что вы просто можете набрать Get-Help Services, чтобы получить список всех командлетов, которые подходят для работы со службами. Пример: PS C:\> Get-Help Service

Вы можете выбрать любой командлет из списка, выведенного по запросу выше, чтобы получить справку о нем. Например,

PS C:\> Get-Help -Name Get-Service Вы получаете всю информацию о командлете Get-Service (будет рассмотрен ниже).
GET-CONTENT
Чтение содержимого файлов – наиболее частое требование для новичков, которые пытаются выучить PowerShell. Процедура чтения файлов с PowerShell упрощается. Даже неспециалист может читать содержимое файла, просто передав его в командлет Get-Content. Пример. PS C:\> Get-Content C:\scripts\Computers.txt mytestpc1 techibee.com dummynotresolvinghost.com PS C:\>

Необходимо больше информации о командлете? Воспользуйтесь Get-Help:

PS C:\> Get-Help Get-Content -Detailed
GET-SERVICE
Этот командлет перечисляет все службы, установленные на компьютере. Вы можете использовать его для получения информации о конкретной службе, совокупности служб или просто обо всех службах на компьютере. Пример:PS C:\> Get-Service wwansvc, spooler Status Name DisplayName ------ ---- ----------- Running spooler Print Spooler Stopped wwansvc WWAN AutoConfig PS C:\> Здесь мы запросили информацию о двух службах wwansvc и spooler Выводится таблица со статусом службы, ее именем и отображаемым именем. Мы можем видеть что служба spooler запущена, а wwansvc остановлена
STOP-SERVICE И START-SERVICE
Запуск и остановка служб – достаточно важный момент в работе администратора Windows. В PowerShell имеются встроенные командлеты, которые упрощают работу администратора, не требуя открытия консоли MMC. Используя эти командлеты Вы можете останавливать/запускать службы как на локальных, так и на удаленных компьютерах. Примеры:Запуск/остановка службы на локальном компьютере (на примере службы spooler):PS C:\> Stop-Service -Name Spooler PS C:\> Start-Service -Name Spooler

Запуск/остановка службы на удаленном компьютере (spooler):

PS C:\> $ServiceObj = Get-Service -ComputerName MyPC1 -Name spooler PS C:\> Stop-Service -InputObj $ServiceObj PS C:\> Start-Service -InputObj $ServiceObj
GET-PROCESS
Этот командлет позволяет быть в курсе, какие процессы запущены на локальных или удаленных компьютерах. Показываются имя и ID процесса, а также путь к исполняемому файлу, имя компании, версия исполняемого файла и память, используемая процессом. Примеры:Получение информации о процессах, запущенных на локальном компьютере:PS C:\> Get-Process

Введите следующий командлет для получения подробной информации о запущенных процессах

PS C:\> Get-Process | Format-List * -Force

Получение информации о процессах, запущенных на удаленном компьютере:

PS C:\> Get-Process -ComputerName MYPC1 | Format-List * -Force

MYPC1 необходимо заменить на имя того компьютера, с которого вы хотите получить информацию о запущенных процессах.

STOP-PROCESS
Этот командлет остановливает процесс на локальном или удаленном компьютере. Он берет имя или ID процесса и завершает этот процесс. Это полезно в тех случаях, когда приложение не отвечает. Пример:Остановить процесс с ID 22608 на локальном компьютере:PS C:\> Stop-Process -Id 22608 Остановить все процессы Excel на локальном компьютере:PS C:\> Stop-Process -name excel

Совет: Хотя у командлета Stop-Process отсутствует параметр -ComputerName, Вы все равно можете использовать его для завершения удаленных процессов, используя предложенный ниже совет:

PS C:\> $Obj = Get-Process -Name excel -ComputerName MYPC1 PS C:\> Stop-Process -InputObject $Obj

Upd: В посте приведен перевод статьи с портала 4sysops.comTop 7 PowerShell commands for beginners

P.S. Смотрите также интересные посты на Хабре, посвященные работе с PowerShellАудит доступа к файлам Аудит Active Directory (Часть 1 и 2)Актуализируем учетные данные Active DirectoryАудит создания учетных записей в AD

habr.com

PowerShell и командлеты

 

Применимо к: Live@edu, Forefront Online Protection for Exchange

Дата изменения раздела: 2009-06-01

С помощью оболочки командной строки и скриптового языка Windows PowerShell ИТ-специалисты могут улучшить контроль и производительность. Использование нового скриптового языка, ориентированного на администраторов, более 130-ти стандартных программ командной строки, а также последовательного синтаксиса и служебных программ в Windows PowerShell позволяет ИТ-специалистам управлять системным администрированием и ускорить автоматизацию. Чтобы получить дополнительные сведения об оболочке Windows PowerShell или загрузить версию для локальной среды, см. Технологический центр для Windows PowerShell (http://go.microsoft.com/fwlink/?LinkID=102372) сети Microsoft TechNet.

Командлеты похожи на встроенные команды других оболочек, например команду dir в cmd.exe. Как и эти знакомые команды, командлеты можно вызывать прямо из командной строки в командной консоли Exchange и запускать в контексте оболочки, а не как отдельный процесс.

Для написания сценариев дополнительной автоматизации можно использовать скрипты Windows PowerShell. Перед запуском Windows PowerShell настройте центр администрирования, как описано в разделе Настройка размещенных служб. Управление службой (запуск, остановка, перезапуск) выполняется из консоли MMC служб. Службу необходимо останавливать и перезапускать каждый раз после смены прокси-сервера.

 

Командлет Цель Параметры Пример

Set-SyncCredentials

Установка учетных данных, используемых клиентом при подключении.

<имя_пользователя> <пароль>

Set-SyncCredentials [email protected] SecurePassword

Set-SyncInterval

Установка интервала, с которым будет запускаться задание синхронизации.

<интервал в минутах>

Set-SyncInterval 240

Set-SyncProxyServer

Настройка используемого прокси-сервера организации при подключении клиента к внутреннему серверу.

{ [-Address <адрес>] | [-AutoDetect] | [-UseDefault] }

Set-SyncProxyServer -Address http://proxy.contosoproxy.com Set-SyncProxyServer -AutoDetect Set-SyncProxyServer –UseDefault

Get-SyncConfig

Получение текущей конфигурации синхронизации и передача отчета о ней на консоль.

нет

Get-SyncConfig

Get-SyncStatus

Получение текущего состояния службы (клиента) синхронизации и передача отчета о нем на консоль.

нет

Get-SyncStatus

Start-Sync

Запуск нового задания синхронизации (вне расписания), если оно еще не выполняется.

нет

Start-Sync

Start-SyncSimulation

Запуск нового задания синхронизации в режиме моделирования, если режим моделирования доступен.

нет

Start-SyncSimulation

Stop-Sync

Прекращение текущего задания синхронизации, если оно выполняется.

нет

Stop-Sync

Clear-SyncCookies

Очищение сохраненных файлов cookie и принудительное выполнение следующей синхронизации в качестве полной.

нет

Clear-SyncCookies

technet.microsoft.com

Как загрузить командлеты PowerShell и получить справку по командлетам

  • 11/17/2015
  • Время чтения: 2 мин

В этой статье

Назначение: Application Virtualization 5.1

Содержание этого раздела:

  • Требования к использованию командлетов PowerShell

  • Загрузите командлеты PowerShell

  • Получение справки по командлетам PowerShell

  • Отображение справки по командлету PowerShell

Требования к использованию командлетов PowerShell

Ознакомьтесь со следующими требованиями к использованию командлетов PowerShell App-V.

Требование Сведения

Пользователи могут запускать командлеты сервера App-V только в том случае, если им предоставлен доступ с помощью одного из следующих методов:

Командлеты, которые требуют командную строку с повышенными привилегиями

  • Add-AppvClientPackage
  • Remove-AppvClientPackage
  • Set-AppvClientConfiguration
  • Add-AppvClientConnectionGroup
  • Remove-AppvClientConnectionGroup
  • Add-AppvPublishingServer
  • Remove-AppvPublishingServer
  • Send-AppvClientReport
  • Set-AppvClientMode
  • Set-AppvClientPackage
  • Set-AppvPublishingServer

Командлеты, которые могут запускать конечные пользователи, за исключением тех ситуаций, когда они настроены на требование командной строки с повышенными привилегиями

  • Publish-AppvClientPackage
  • Unpublish-AppvClientPackage

Чтобы настроить эти командлеты для требования командной строки с повышенными привилегиями, используйте один из следующих методов:

 

Загрузите командлеты PowerShell

Для загрузки модулей командлетов PowerShell:

  1. Откройте Windows PowerShell или интегрированную среду сценариев Windows PowerShell (ISE).

  2. Введите одну из следующих команд, чтобы загрузить командлеты для желаемого модуля:

Компонент App-V Команда для ввода

Сервер App-V

Import-Module AppvServer

App-V Sequencer

Import-Module AppvSequencer

Клиент App-V

Import-Module AppvClient

Получение справки по командлетам PowerShell

Начиная с версии App-V 5.0 SP3 справка по командлетам доступна в двух форматах.

Формат Описание

Как загружаемый модуль

Чтобы загрузить последнюю версию справки после загрузки модуля командлета:

  1. Откройте Windows PowerShell или интегрированную среду сценариев Windows PowerShell (ISE).
  2. Введите одну из следующих команд, чтобы загрузить командлеты для желаемого модуля:

 

Компонент App-V Команда для ввода

Сервер App-V

Update-Help-Module AppvServer

App-V Sequencer

Update-Help-Module AppvSequencer

Клиент App-V

Update-Help-Module AppvClient

В библиотеке TechNet в виде веб-страниц

См. узел App-V в разделе Microsoft Desktop Optimization Pack Automation с Windows PowerShell.

Отображение справки по командлету PowerShell

Для получения справки по определенному командлету PowerShell:

  1. Откройте Windows PowerShell или интегрированную среду сценариев Windows PowerShell (ISE).

  2. Введите Get-Help <командлет>, например Get-Help Publish-AppvClientPackage.

Есть предложение для App-V? Выдвигайте предложения и голосуйте за них здесь.Есть вопрос по App-V? Найдите ответ на форуме TechNet по App-V.

-----Дополнительные сведения о MDOP можно найти в библиотеке TechNet, статьях по устранению неполадок на вики-сайте TechNet или подписавшись на новости в Facebook или Twitter.-----

technet.microsoft.com

powershell - Передовые методы разработки командлетов Powershell

Допустимо выводить любой тип объекта, который лучше всего использовать для представления того, что вы пишете - DataSet абсолютно прав. Единственная потенциальная осторожность заключается в том, что v2 PowerShell может оказаться запущенным на уменьшенной версии .NET Framework (например, на Server Core), поэтому, если это потенциальный сценарий для ваших командлетов, вам нужно использовать некоторую осторожность, чтобы убедиться, что объект, который вы выводите, существует в каждой системе, где может использоваться ваш командлет.

Все, что сказано, трубопровод работает лучше всего, когда он содержит коллекции объектов; DataSet не является коллекцией как таковой. Другими словами, вы хотите, чтобы командлеты downstream могли получать один объект за раз по конвейеру, так что этим командлетам не нужно вручную перечислять через объект. Я не очень разбираюсь в том, что вы делаете - вполне возможно, что DataSet вполне уместен, но я обычно предпочитаю внутреннюю контур cmdlet через DataSet, создавать свои собственные пользовательские объекты (так что каждый столбец в таблице становится свойством) и выводит эти объекты в конвейер. Это просто увеличивает количество командлетов вниз по потоку, которые могут потреблять то, что вы выпускаете.

Простым тестом является передача вывода командлета в Export-CSV. Если он работает (и, вероятно, не будет с DataSet), тогда вы делаете все правильно. Теперь вам может понадобиться создать командлет, который выводит DataSet, и вы только собираетесь использовать некоторые другие командлеты, которые вы написали (которые потребляют DataSets), чтобы работать против этого вывода. В этом нет ничего плохого. Однако максимальная гибкость - это отдельные объекты, поскольку она позволяет всем основным командлетам PowerShell работать на вашем выходе.

Надеюсь, это поможет.

code-examples.net

Командлеты PowerShell для работы с дисками

Обычно для работы с дисками я использую оснастку управления дисками (Disk management) или утилиту Diskpart. А недавно решил проверить, нет ли в PowerShell каких либо средств для работы с дисками. Оказалось, что есть. В PowerShell (начиная с третьей версии) входит модуль Storage, предназначенный как раз для управления дисковыми устройствами.

В него входит больше сотни командлетов, вывести их список можно командой:

Get-Command -Module Storage

Рассмотрим некоторые наиболее употребимые команды. Для примера предположим, что я подключил новый диск и мне необходимо его подготовить — инициализировать, разбить на разделы, отформатировать и т.д.

Первым делом выведем список всех дисков в системе командой:

Get-Disk

Новый диск можно узнать по значению RAW в поле Partition Stylle. Инициализируем его:

Initialize-Disk -Number 1 -PartitionStyle GPT

Затем создадим раздел размером 40Гб и дадим ему букву диска X:

New-Partition -DiskNumber 1 -Size 40GB -DriveLetter X

Отформатируем полученный раздел в NTFS и укажем для него метку тома:

Format-Volume -DriveLetter X -FileSystem NTFS -NewFileSystemLabel Disk2 -Confirm:$false

 

Теперь предположим, я промахнулся с размером раздела и его надо увеличить. Посмотреть доступный размер для раздела можно командой:

Get-PartitionSupportedSize -DriveLetter X | Format-List

Увеличим раздел до максимально возможного:

$size = (Get-PartitionSupportedSize -DriveLetter X).SizeMaxResize-Partition -DriveLetter X -Size $size

И до кучи сменим букву диска:

Set-Partition -DriveLetter X -NewDriveLetter Y

 

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

Clear-Disk -Number 1 -RemoveData -Confirm:$false

И снова получим чистый,  не разбитый диск.

 

И еще, все командлеты имеют параметр CimSession, позволяющий выполнять операции с дисками на удаленных компьютерах, например:

$session = New-CimSession -ComputerName SRV1 -Credential Contoso\AdministratorGet-Disk -Cimsession $session

Напомню, что по умолчанию модуль Storage есть только в Windows 8\Server 2012 и выше, для более старых ОС придется устанавливать PowerShell v3 отдельно. Более подробную информацию о командлетах для работы с дисками можно посмотреть на TechNet, либо воспользовавшись встроенной справкой PowerShell.

windowsnotes.ru