Рубрика «powershell» - 17

Вводная: с данной заметке описывается как получить ускорение в 5-10 (и более раз) при обработке большого количества строк используя вместо String объект StringBuilder.

Вызов конструктора System.Text.StringBuilder:

$SomeString = New-Object System.Text.StringBuilder

Обратное преобразование в String:

$Result = $Str.ToString()

Читать полностью »

             image

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

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

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

Соответственно для реализации такой системы перед администратором ставятся задачи: во-первых, каким образом эти логи собирать, во-вторых, каким образом с ними удобно и централизованно работать. Благодаря достаточно развитой связке ELK (Elasticsearch + Logstash + Kibana), уже не раз описанной на Хабре, у администратора имеются инструменты для удобного поиска и отображения всей присутствующей в логах информации. Поэтому ответ на вторую задачу имеется изначально, и остается лишь решить задачу по сбору логов.

Так как в моем случае требованием к системе было отсутствие клиента на серверах, и то, что логи требовалось вытаскивать с Windows-серверов, то в качестве инструмента сбора был выбран родной для Windows — powershell.
Исходя из этого была составлена следующая модель сбора и отображения информации из логов: логи удаленно собираются с серверов powershell-скриптом, после чего складываются в виде файлов на хранилище, далее средствами ELK (Elasticsearch + Logstash + Kibana) происходит их обработка и отображение.

Пример работы всей связки представлен на изображении:

Централизованый сбор Windows event логов, без установки агента, с последующей визуазизацией средствами ELK - 1
Читать полностью »

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

… не хочешь булок — есть плюшки. Точнее будут, ежели их испечь. Благо тесто оттенка общепитовских пельменей под названием PowerShell согласно рецептам на упаковке является если не универсальным, то многоцелевым точно. И не беда, что под рукой не оказалось изюма с маком, в умелых руках плюшки и из синюшнего теста могут быть пышными и румяными.
Читать полностью »

Рейтинги — показатель пристрастий, а не объективности
или проницательности ума голосующего.

Г.Гаретт

Наверняка среди администраторов Windows найдутся те, кого озадачивали критерии, согласно которым разработчики PowerShell определяют какие командлеты непременно должны быть включены в основную поставку, а какие — нет. И нужно отметить, что без бутылки, а то и двух, здесь явно не разобраться. Дело, правда, не в количестве спиртного, прямо пропорционального достижению трезвости ума, главную роль здесь скорее играет все же попытка разработчиков мыслить глобальными категориями. Одни говорят, дескать, попытка эта обречена в самом зародыше, другие видят во всем этом некие перспективы, третьи, будучи приверженцами идеи «без разницы какая ОСь, лишь бы консоль», просто продолжают работать, тешась перепалками первых двух.
Читать полностью »

Однажды мне всё это надоело…
Вероятно, в большинстве случаев именно с этой фразы начинается творчество системных администраторов. В результате мы видим (хотя, правильнее сказать, даже и не замечаем) появление множества маленьких программ, которые выполняют свои точные и строго определённые задачи в одной большой системе.

Случилась (да и регулярно случается) со мной подобная история. Не скажу, что я изобрёл что-то новое и выдающееся. Скорее наоборот – воспользовался трудами коллег, найденными в просторах интернета и в кладезях премудрости Хабра. Но мне удалось объединить их для решения вполне конкретной и достаточно интересной задачи. Далее я опишу конкретное решение конкретной задачи по управлению паролями пользователей в Active Directory. Точнее, автоматизацию проверки срока действия этих паролей и генерации новых паролей. В качестве признательности коллегам я счёл необходимым опубликовать это решение здесь, в надежде, что оно кому-то пригодится или послужит источником новых идей.
Читать полностью »

image

В преддверии выпуска Windows 10 и новой, пятой, версии Powershell, хочу поговорить с вами о одном из наиболее серьезных нововведений этого языка — о классах. Начать наш разговор мне видится уместным с экземпляров класса — объектов — являющихся безусловно киллер-фичей языка сценариев Powershell. Простота и лаконичность упрощенного объектно-ориентированного подхода в языке автоматизации задач покорила не только большую, казалось бы, черствую, подобно 16-bit legacy, корпорацию, но и пользователей альтернативных операционных систем.

«Упрощенным» объектно-ориентированным я его назвал умышленно и хочу обратить на это ваше внимание. Объектно-ориентированные языки программирования предполагают ряд сущностей, таких как класс(тип), экземпляр класса, свойства и методы этого экземпляра, чаще называемого объектом. Powershell же, ловко оперируя объектами и их свойствами, практически полностью лишен методов и абсолютно полностью определяемых пользователем типов объектов (классов). Из часто используемых методов в голову приходят пожалуй лишь .trim() да .ToString(). Если дать еще минутку на парсинг дампа опыта написания скриптов на Powershell, всплывет еще что-то про Get-WMIObject.

Предлагаю освежить в памяти создание объекта в Powershell, хотя и для первого знакомства будет отлично.
Читать полностью »

Какой смысл ограничивать себя чем-то одним, если существует вероятность возникновения задачи непосильной для этого чего-то? Кудряво сказано, а если проще, то есть такая штука, называется кругозор. И потом, какие-то вещи проще познавать на примерах, какие-то в сравнении с чем-то. Но все же лучшим стартом в изучении чего-либо является чтение документации и опыт предшественников, и если первое дает некоторые представление о предмете, второе позволяет избежать повторения ошибок и способствует улучшению решений уже существующих.
Читать полностью »

Каждый по-своему распоряжается свободным временем, мне, например, нравится реализовывать аналоги различных утилит на скриптовых языках и, нужно отметить, занятие это довольно забавное, так как в процессе работы над некоторыми из них невольно закрадывается мысль, что последние, возможно, всего лишь экзерсисы их авторов, позиционируемые как крайне необходимый в быту тулкит. Какая от всего этого практическая ценность? Ничего кроме независимости от чужих ошибок, а также возможности дополнитьурезать уже реализованный в оригинальной утилите функционал, на ум не приходит. Хотя, если брать в расчет отсутсвие исходных кодов оригиналов, ценным может статься сам опыт.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js