скрипт

  • Добавление записей в атрибут userWorkstations пользователя в Active Directory

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

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

  • Усечение лога транзакций в MS SQL Server 2005/2008/R2

    В Microsoft SQL Server 2005/2008/R2 усечение лога транзакций происходит совсем не так, как это было в 2000-й версии.

  • Выгружаем пользователей AD в базу MS SQL

    Здравствуйте!

    Продолжаю публикации скриптов. Сегодняшний наш пациент был разработан в процессе создания биллинга звонков. У каждого юзера в Active Direcotry есть поле, в котором прописан его внутренний номер телефона. Этот же номер фигурирует в биллинге, но нам конечно хочется видеть не что-то вроде "1316", а "Иванов Владислав Александрович". 

    В сети полно примеров и скриптов, позволяющих достать пользователей из AD в csv-файл. По логике, мы можем потом взять этот csv и импортировать в MS SQL с помощью SSIS-скриптов. Однако это мне это не понравилось, т.к. на выходе у нас получается аж два скрипта, работающих на разных технологиях + один промежуточный файл. И это только для одного домена AD. А у меня их 14.

  • Запускаем Powershell-скрипты в планировщике задач

    Как и любые скрипты, необходимо иметь возможность запускать Powershell-сценарии не вручную, а по расписанию.

    Например, в заметках, указанных внизу статьи (по Lync Server), так и необходимо делать.

    Естественно, на помощь приходит планировщик задач Windows, однако как все-таки заставить запуститься файл *.ps1?

  • Поиск строки в базе MS SQL Server

    Иногда, когда изучаешь софт, бывает необходимо найти некоторое значение в базе данных Microsoft SQL Server.

    Вот вам скрипт, который выполняем в Query Editor над базой. В строчке "set @search_string = 'what.you.are.searching.for';" в кавычках пишем, что мы ищем.

  • Сгенерировать случайный пароль на Powershell за 2 строки Обычно я генерирую пароли для пользователей, закрывая глаза и нажимая кнопки на клавиатуре. Сейчас уже это делать необязательно - генерировать можно скриптом на Powershell:

  • Управление NTFS-правами в Powershell Как упростить и сделать более наглядным взаимодействие с правами доступа на файлы и их наследованием? Воспользуйтесь популярным и полезным скриптом File System Security PowerShell Module. 
  • Статус установки обновлений для рабочих станций через WSUS на Powershell Статус установки обновлений для рабочих станций через WSUS на Powershell

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

    Мне был нужен скрипт, который покажет, что на каких-то компьютерах есть не установленные одобренные обновления. Такой отчет есть в консоли WSUS, он называется Computer Tabular Status for Approved Updates

    Но это достаточно трудоемкая задача, когда у вас 5-10-15 серверов.

  • Решение проблем с UAC в Windows Server 2012 R2

    Неожиданно для меня, Veeam Backup & Replication начал выдавать ошибку создания резервных копий некоторых моих виртуальных машин. Как оказалось, проблема заключалась в том, что Veeam не мог запустить pre-freeze скрипт для остановки сервисов.

    Дальнеший разбор полетов показал, что проблема заключалась в том, что UAC не давал прав на выполнение команд. Если запустить bat-файл под расширенными правами, остановка и старт служб отрабатывал без проблем.

     

  • Выполнение команд в Linux через SSH с помощью Powershell

    В одной моей задаче надо было написать скрипт для отправки SMS-сообщений. У нас уже был настроен сервер для отправки SMS на Linux. Оставалось только научиться отправлять команды в Linux через SSH.

    Первоначально я пытался использовать модуль SSH-Session, но в нем были какие-то ошибки при отправке команд. Поэтому я остановился на Posh-SSH.

     

    Устанавливаем модуль:

  • Удаление старых файлов и папок на Powershell

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

  • Скрипты для быстрого обновления адресной книги в Lync 2010/2013

    Как известно, в Lync есть своя адресная книга, которая скачивается клиентами. По умолчанию, закачка или обновление адресной книги в клиентской программе происходит в первые 60 минут после запуска программы. В целом, в нашей компании это оказалось плохим решением, точно так же, как и тот факт, что измененные в Active Directory пользовательские данные попадают на конечные компьютеры с достаточно большой задержкой.

    Последствия такого поведения:

  • Массовое удаленное изменение DNS-серверов в настройках сетевой карты в Windows

    При апгрейде контроллеров домена или их удалении\добавлении, всегда появляется необходимость изменить DNS-сервера в настройках сетевых интерфейсов. Там, где сетевые настройки выдаются через DHCP - проблем нет. А там, где все настроено вручную, придется заходить на каждый сервер и менять руками. Это долго и неудобно.

  • Парсим сайты и веб-страницы с помощью Powershell / Invoke-WebRequest / getElementsByTagName и боремся с производительностью

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

    В Powershell есть специальный коммандлет Invoke-WebRequest, который собственно и разбирает HTML-страницу на тэги и содержимое. На выходе этот коммандлет выдает объект страницы с полем ParsedHtml. К этому полю можно применять методы по выборке нужных данных.

    Допустим, что вам нужно выбрать все ссылки на странице. Вот как это работает.

  • Бэкап MS SQL (в том числе Express) баз данных с помощью Powershell скрипта

    В бесплатной версии Microsoft SQL Server - Express - нет возможности настроить резервное копирование баз данных по расписанию. Однако вы можете настроить бэкап с помощью Powershell-скриптов и планировщика задач Windows.

    Ниже - пример скрипта, как это делаю я. Скрипт не удаляет старые бэкапы. Но почитайте мою статью Удаление старых файлов и папок на Powershell, она вам поможет. И еще - Запускаем Powershell-скрипты в планировщике задач.

    Обратите внимание на выделенные строки - там надо прописать ваш путь к бэкапам и инстанс SQL-сервера.

  • Массовая запись в базу MS SQL скриптом на Powershell Массовая запись в базу MS SQL скриптом на Powershell

    При тестировании отказоустойчивой конфигурации Microsoft SQL Server 2012 (подробнее: Пошаговое развертывание AlwaysOn - MS SQL 2012) мне нужно было сгенерировать массовую запись данных в базу.

    Т.к. я совсем не знаю T-SQL, решил написать небольшой скрипт на Powershell для решения этой задачи.

    Нам понадобится:

    • Непосредственно база данных
    • Таблица в ней для службных нужд
  • Как удаленно перезагрузить службы Windows с помощью Powershell Как удаленно перезагрузить службы Windows с помощью Powershell

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

    Т.к. у нас заблокирован ICMP/ping между ландшафтами разработки, я использовал WMI-запросы, чтобы определить, запущена ли удаленная машина.

  • Найти сервера с установленным MS SQL Server с помощью Powershell Найти сервера с установленным MS SQL Server с помощью Powershell

    Вот скрипт, который умеет искать сервера в вашем домене, на которых установлен Microsoft SQL Server.

    Скрипт умеет обрабатывать выключенные\неотвечающие сервера с помощью пингов WMI, что полезно, когда ICMP по какой-то причине заблокирован. Кроме этого, тут используется Powershell Remoting, поэтому сначала удостоверьтесь, что он включен.

  • Найти список всех образов для виртуальных машин в Azure Найти список всех образов для виртуальных машин в Azure

    Когда вы строите свою инфраструктуру в облаке Azure, используя IaaC (Infrastructure as a Code) подход, иногда вам придется некоторые ваши виртуалки переразворачивать. От этого никуда не денешься, учитывая, в общем-то, специфику облака: что-то не работает? - передеплой. И вот иногда бывает так, что сталкиваешься с проблей переразвертывания, когда парни из Microsoft обновляют образы для виртуалок новыми версиями систем. Например - SQL server 2014 уже не поставляется с SP1. В итоге вам надо как-то быстро найти список новых ID для образов, чтобы обновить свои ARM или Powershell-скрипты.

    Я написал небольшой скрипт, который поможет в этом.