Рассуждения на вольные темы

PowerShell Scripts (part 2) — Как не надо писать скрипты

В предыдущей статье PowerShell Scripts (part 1) — Как надо писать скрипты я писал, собственно, о том, как надо делать, а эта статья будет написана в стиле «Вредные советы», только без запутываний и сарказма Григория Остера.

Я просто расскажу о плохих подходах, которые постоянно встречаю в скриптах своих коллег или просто в интернете.

return

Бывает, смотришь, хороший скрипт, а написан плохо… Такие двоякие чувства возникают в этот момент 🙂 Итак, погнали:

Продолжить чтение «PowerShell Scripts (part 2) — Как не надо писать скрипты»

Реклама
Рассуждения на вольные темы·PowerShell·Windows

PowerShell Scripts (part 1) — Как надо писать скрипты

В статье PowerShell скрипты, модули, профили (введение) я рассказал об общих моментах, когда стоит создать модуль, а когда достаточно обойтись одним файлом со скриптом. Сегодня я более подробно расскажу о скриптах, как их писать и как писать не стоит.

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

-NoProfile -Command Get-VMIntegrationService -VMName * -Name ‘Time Synchronization’ | ? Enabled | Disable-VMIntegrationService -Passthru

Для начала покажу несколько популярных вариантов написания функций.

Продолжить чтение «PowerShell Scripts (part 1) — Как надо писать скрипты»

PowerShell·Windows

PowerShell-ActiveDirectory: @(Get-ADUser admin).Count -eq 1 и другие косяки модуля ActiveDirectory

Начну цитатой

Если ты сделал быстро, но плохо, все скоро забудут, что ты сделал быстро, но зато долго будут помнить, что ты сделал плохо.
Если ты что-то сделал медленно, но хорошо, то все скоро забудут, что ты работал медленно, но будут долго помнить, что сделал хорошо.

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

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

Так вот, хочу описать небольшую проблемку, на решение которой я когда-то потратил целый рабочий день: Мои коллеги сказали, что скрипт, который я запулил в планировщик, работает не всегда корректно. К вечеру было ясно, что при работе с модулем ActiveDirectory нужно очень аккуратно пользоваться методом Count

Продолжить чтение «PowerShell-ActiveDirectory: @(Get-ADUser admin).Count -eq 1 и другие косяки модуля ActiveDirectory»

PowerShell·Windows

PowerShell — Массовая загрузка данных в ActiveDirectory

Часто мне задавали вопрос: «Как правильно выгрузить данные из AD, поправить и загрузить обратно?»

Обычно на этот вопрос я нехотя отвечал Get-ADUser>Set-ADUser, но недавно мне задал аналогичный вопрос один оочень дотошный товарищ, который оочень боялся за свою AD, и оочень плохо знает PowerShell. Тогда мне пришлось написать скрипт самому и тут я понял что это делается не в 2 строчки.

Вся проблема в пустых полях, но как же быть без них…

Продолжить чтение «PowerShell — Массовая загрузка данных в ActiveDirectory»

PowerShell·Windows

PowerShell — AD GPO — PcDescription

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

Все реализовывают ее по-своему. Я видел даже вариант с логон-скриптом, который пишет информацию о логоне в текстовый файл, что, на мой взгляд, является самым отвратительным и ненадежным вариантом.
Я несколько раз выполнял эту задачу в разных организациях и с каждым разом реализация становилась все интереснее, но самая последняя реализация сегодня раскрыта не будет, т.к. она включает в себя и powershell, БД, веб-интерфейс, т.е. содержит слишком много компонентов для описания в статье. Может когда-нибудь напишу.

Сегодня я расскажу о двух более простых вариантах:

Продолжить чтение «PowerShell — AD GPO — PcDescription»

Рассуждения на вольные темы·PowerShell·Windows

PowershellGallery — гдеж ты был все эти годы?

Сегодня не будет картинок, инструкций или разбора скриптов.

Сегодня я еще раз хочу напомнить всем о том, что не так давно windows начал свое путешествие назад в будущее и произошло непоправимое: разрыв простра́нственно-временно́го конти́нуума! Теперь всем Windows-администраторам придется возвращаться к консоли, а те, кто не сделают этого, вероятно, должны будут сменить проф. ориентацию.

Мы возьмем с собой в поход…
Нет, не так.
Мы возьмем с собой назад в будущее PowerShell!
Спасибо 🙂

Итак, сегодня я расскажу, какие же консольные инструменты у нас есть теперь.

Я уже писал про самое существенное, на мой взгляд,  нововведение в PowerShell 5, но тогда я только начал использовать PowershellGallery и, при этом, я ни разу не использовал technet scriptcenter gallery для того, чтоб с кем-то чем-то поделиться, а пользовался им только для поиска скриптов.

ScriptCenter — хорошая штука… была бы… лет 15-20 назад…

А сейчас это морально устаревшее УГ!

Продолжить чтение «PowershellGallery — гдеж ты был все эти годы?»

Рассуждения на вольные темы·PowerShell

PowerShell, PowerShell, сколько мне лет?

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

Я часто забываю сколько мне лет и не я один, и пусть скрипт шуточный, но шутка настолько забавная, что этот скрипт я выложил на powershellgallery, посмотрим, сколько еще ITшников забывают, сколько им лет 🙂

Кстати, для тех, кто не знает про powershellgallery, установить скрипт можно так:

Install-Script Get-MyAge -Force

Продолжить чтение «PowerShell, PowerShell, сколько мне лет?»