powershell - Передовые методы разработки командлетов Powershell. 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. Команды этого типа компилируются в dll-библиотеки и подгружаются к процессу PowerShell во время его запуска. Сами по себе командлеты как приложения не запускаются.
Имена командлетов соответствуют шаблону «глагол-существительное». Глагол описывает действие, которое мы хотим совершить, а существительное — объект, над которым будет совершаться действие. Например, чтобы очистить экран консоли, требуется ввести команду Clear-Host. Вы можете просмотреть доступные команды, введя в консоли Get-Command.
Командлеты могут иметь параметры. В общем виде это выглядит так:
имя_командлета -параметр1 -параметр2 аргумент1 аргумент2
Аргументы это параметры не имеющие имен.
Как это работает? Например, у нас есть команда 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.
Итак, мы получили представление о командлетах. В следующий раз поговорим о функциях.
Основные командлеты Windows PowerShell
Documents войти Загрузить ×- Технологии
- Информатика
Related documents
Windows Powershell — RU
Feature Comparison: Windows Server
Андреев А.А. Программные средства для интернет
При борьбе с трояном Trojan
Установка операционной системы Windows
os_theor1x
Этап 1. Настройка локальной среды
ASSEMBLER &
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Вы можете выбрать любой командлет из списка, выведенного по запросу выше, чтобы получить справку о нем. Например,
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 -DetailedGET-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 $ServiceObjGET-PROCESS
Этот командлет позволяет быть в курсе, какие процессы запущены на локальных или удаленных компьютерах. Показываются имя и ID процесса, а также путь к исполняемому файлу, имя компании, версия исполняемого файла и память, используемая процессом. Примеры:Получение информации о процессах, запущенных на локальном компьютере:PS C:\> Get-ProcessВведите следующий командлет для получения подробной информации о запущенных процессах
PS C:\> Get-Process | Format-List * -ForceПолучение информации о процессах, запущенных на удаленном компьютере:
PS C:\> Get-Process -ComputerName MYPC1 | Format-List * -ForceMYPC1 необходимо заменить на имя того компьютера, с которого вы хотите получить информацию о запущенных процессах.
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 $ObjP.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 только в том случае, если им предоставлен доступ с помощью одного из следующих методов: | |
Командлеты, которые требуют командную строку с повышенными привилегиями |
|
Командлеты, которые могут запускать конечные пользователи, за исключением тех ситуаций, когда они настроены на требование командной строки с повышенными привилегиями |
Чтобы настроить эти командлеты для требования командной строки с повышенными привилегиями, используйте один из следующих методов: |
Загрузите командлеты PowerShell
Для загрузки модулей командлетов PowerShell:
Откройте Windows PowerShell или интегрированную среду сценариев Windows PowerShell (ISE).
Введите одну из следующих команд, чтобы загрузить командлеты для желаемого модуля:
Сервер App-V | Import-Module AppvServer |
App-V Sequencer | Import-Module AppvSequencer |
Клиент App-V | Import-Module AppvClient |
Получение справки по командлетам PowerShell
Начиная с версии App-V 5.0 SP3 справка по командлетам доступна в двух форматах.
Как загружаемый модуль | Чтобы загрузить последнюю версию справки после загрузки модуля командлета:
| ||||||
В библиотеке TechNet в виде веб-страниц | См. узел App-V в разделе Microsoft Desktop Optimization Pack Automation с Windows PowerShell. |
Отображение справки по командлету PowerShell
Для получения справки по определенному командлету PowerShell:
Откройте Windows PowerShell или интегрированную среду сценариев Windows PowerShell (ISE).
Введите 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