Найти в Дзене
Улучшаем взаимодействие с кавычками и скобками в PowerShell при помощи PSReadline
В этой статье мы продолжим исследование содержимого файла SamplePSReadLineProfile.ps1 из модуля PSReadline. Во многих редакторах кода взаимодействие со скобками - () {} [] - и кавычками - "" '' - построено следующим образом - вы вводите первую из них, и вторая добавляется автоматически, если тут же при помощи клавиши Backspace вы стираете первую, то вторая также удаляется. Закончив ввод содержимого, вы вводите правую скобку или кавычку, и редактор кода не добавляет еще одну, а перешагивает через существующую. То же самое мы можем сделать и в консоли PowerShell. Заглянув в файл SamplePSReadLineProfile...
5 лет назад
Добавляем пользовательские типы данных к объектам
Каждый объект PowerShell принадлежит к какому-либо типу данных. Например, объект процесса - это экземпляр типа System.Diagnostics.Process. Get-Process | Get-Member TypeName: System.Diagnostics.Process. .. Объекты, являющиеся результатом выполнения команд PowerShell, уже принадлежат к определенному типу данных, однако это не мешает нам добавить к ним нужный нам собственный тип. Еще более полезной эта возможность становится при работе с пользовательскими объектами - System.Management.Automation.PSCustomObject. [PSCustomObject]@{    Name = 'Object'    Description = 'Object Description' } Для чего...
5 лет назад
Сохранение введенной команды PowerShell для последующего использования
Предположим, вы работаете в консоли PowerShell и ввели большую и сложную команду. В этот момент вы понимаете, что забыли определить переменную, создать удаленную сессию и мало ли что еще. Вы удаляете введенную команду, выполняете необходимые действия и вводите ее заново. Знакомо? В этой статье мы поговорим о нескольких подходах, что могут нам помочь в подобных ситуациях. Чтобы не слишком отвлекаться от основной темы статьи, решим, что нашей большой и сложной командой будет получение объектов процессов. Get-Process -Name $ProcessName А пропущенной командой будет определение переменной $ProcessName...
5 лет назад
PlasterTemplates — модуль PowerShell, содержащий шаблоны для использования с Plaster
Plaster позволяет разработчикам создать структуру файлов и папок для нового модуля PowerShell. Инсталляция Для установки модуля PlasterTemplates используйте следующую команду. Install-Module -Name PlasterTemplates Справочная информация Для получения справочной информации используйте следующую команду. Get-Help about_PlasterTemplates Шаблоны PowerShellModule — создание нового модуля PowerShell с поддержкой Visual Sudio Code, Pester и Azure Pipelies. Для создания модуля с использованием шаблона PowerShellModule используйте следующую команду. Invoke-Plaster -TemplatePath 'C:\Program Files\PowerShell\Modules\PlasterTemplates\Templates\PowerShellModule'...
5 лет назад
История команд в PowerShell
PowerShell сохраняет историю выполненных команд. Сам по себе PowerShell сохраняет введенные команды в оперативной памяти. Модуль PSReadline дополнительно сохраняет их в файле на жестком диске, что позволяет нам возвращаться к командам, введенным не только в текущей сессии, но и к тем, что были выполнены некоторое время назад и, возможно, в иной версии PowerShell. Местонахождение этого файла мы можем получить при помощи следующей команды. Get-PSReadLineOption | Select-Object HistorySavePath Просмотреть введенные ранее команды мы можем при помощи клавиш Вверх и Вниз. Первая из них перемещает нас назад по истории, вторая - в обратном направлении...
5 лет назад
ForEach-Object и его скриптблоки
Командлет ForEach-Object предназначен для выполнения указанных нами действий с каждым из элементов массива. Этот массив может быть указан в качестве значения параметра -InputObject, однако в подавляющем большинстве случаев элементы передаются командлету ему по конвейеру. Нужно сказать, что при помощи командлета ForEach-Object мы можем обрабатывать несколько элементов параллельно, а также обращаться к какому-либо свойству или методу поступающих по конвейеру объектов. Однако же в данной статье мы остановимся на его классическом варианте использования - выполнение нескольких скриптблоков для каждого поступающего элемента...
5 лет назад
Операторы -like, -notlike и -not в PowerShell
Оператор -like позволяет нам использовать символы подстановки при выборе требуемых значений. Например, так. Get-Service | Where-Object Description -like "*wsman*" Или же Get-Service | Where-Object Description -like "*w?man*" По умолчанию этот оператор не чувствителен к регистру. То есть, следующие команды будут полностью равнозначными. Get-Service | Where-Object Description -like "*wsman*" Get-Service | Where-Object Description -like "*WSman*" Get-Service | Where-Object Description -like "*WSMAN*" Если же нам нужно, чтобы оператор -like принимал во внимание регистр рассматриваемых им элементов,...
5 лет назад
Тип PSPropertyExpression
Тип Microsoft.PowerShell.Commands.PSPropertyExpression (его акселератор - [pspropertyexpression]) присутствует в PowerShell с самого начала, но в версии 6.1 он стал публичным (public), что делает его доступным и для нас, как авторов скриптов и модулей. Сам по себе этот тип используется, например, параметром Property командлета Measure-Object. Get-Process pwsh | Measure-Object -Property CPU -Average Count             : 3 Average           : 39.8645833333333 Sum               : Maximum           : Minimum           : StandardDeviation : Property          : CPU В данном случае, в качестве значения...
5 лет назад
Использование делегатов в PowerShell
Что такое делегат (delegate)? Это тип объекта, который при инициализации ассоциируется с неким методом и позволяет нам, обращаясь к делегату, вызывать этот самый метод. Для чего это нужно? Один из вариантов использования делегатов — это возможность передачи ассоциированного с делегатом метода в качестве параметра другому методу.PowerShell это поддерживает? Начиная с версии 6.1 — да. Delegates Класс TransfromEngine Решим, что у нас будет класс, содержащий определенный метод для выполнения некоторых действий со строчными значениями, которые будут ему переданы в качестве первого параметра. Вторым...
5 лет назад
Получение и изменение списка администраторов сайта SharePoint Server при помощи PowerShell
В предыдущем посте мы рассматривали облачный сервис SharePoint Online. Теперь давайте поговорим о ферме SharePoint, развернутой локально. Мы можем указать первичного (Primary) и вторичного (Secondary) администраторов коллекции сайтов SharePoint в портале SharePoint Central Administration, выбрав в меню пункт Application Management и перейдя по ссылке Change site collection administrators, расположенной в разделе Site Collections. Первичный и вторичный администраторы — это те, кто, кроме всего прочего, получает уведомления по электронной почте о различных событиях, происходящих в SharePoint, например, о достижении коллекцией сайтов лимита объема хранения...
6 лет назад
Получение и изменение списка администраторов сайта в SharePoint Online при помощи PowerShell
В портале администрирования SharePoint Online мы можем указать как первичного администратора — Primary Admin, так и остальных администраторов в свойствах сайта. Давайте рассмотрим, как это сделать при помощи PowerShell. Пролог Для взамодействия с SharePoint Online через PowerShell, нам потребуется модуль Microsoft.Online.SharePoint.PowerShell. Вы можете установить его из PowerShell Gallery при помощи команды Install-Module. Install-Module Microsoft.Online.SharePoint.PowerShell Обновить уже установленный модуль до новой версии можно при помощи команды Update-Module. Update-Module Microsoft.Online...
6 лет назад