Если вы используете Active Directory у вас используется Exchange, OwnCloud, SharePoint или другая система с возможностью отображения аватара или фото, то после прочтения данный статьи у вас появится возможность загрузить фото пользователя в AD для отображения в Outlook, Lync, на порталах SharePoint и других системах.

3.18
Рейтинг
PowerShell *
Расширяемое средство автоматизации от Microsoft
Сначала показывать
Порог рейтинга
Уровень сложности
Try/Catch/Finally
4 мин
84KКогда вы используете Try/Catch/Finally, команда которая будет выполняться помещается в блок Try. Если произойдет ошибка в процессе выполнения команды, то она будет записана в переменную $Error, и выполнение скрипта перейдет к блоку Catch.
-2
Advanced PowerShell vol. 1: повторное использование кода
6 мин
36KПривет! Как большой поклонник и активный практик PowerShell я часто сталкиваюсь с тем, что мне необходимо повторно использовать ранее написанные куски кода.
Собственно, для современных языков программирования code reuse — это обычное дело.
PowerShell в этом вопросе не отстает, и предлагает разработчикам (написателям скриптов) сразу несколько механизмов обращения к написанному ранее коду.
Вот они по возрастанию сложности: использование функций, дот-сорсинг и написание собственных модулей.
Рассмотрим их все порядку.
В качестве решения лабораторной задачи напишем скрипт, который расширяет раздел C:\ до максимально возможного размера на удаленном Windows-сервере LAB-FS1.
Такой скрипт будет состоять из одной строки и выглядеть так:
Работает это так. Сначала PowerShell устанавливает удаленное соединение с сервером LAB-FS1 и запускает на нем локально набор команд, заключенный в фигурные скобки параметра -ScriptBlock. Этот набор в свою очередь последовательно передает команде diskpart три текстовых параметра, а diskpart выполняет (по очереди) повторное сканирование разделов, выбор раздела C:\ и расширение его до максимально возможного размера.

Как видите, скрипт крайне простой, но в то же время крайне полезный.
Рассмотрим, как правильно упаковать его для повторного использования.
Собственно, для современных языков программирования code reuse — это обычное дело.
PowerShell в этом вопросе не отстает, и предлагает разработчикам (написателям скриптов) сразу несколько механизмов обращения к написанному ранее коду.
Вот они по возрастанию сложности: использование функций, дот-сорсинг и написание собственных модулей.
Рассмотрим их все порядку.
В качестве решения лабораторной задачи напишем скрипт, который расширяет раздел C:\ до максимально возможного размера на удаленном Windows-сервере LAB-FS1.
Такой скрипт будет состоять из одной строки и выглядеть так:
Invoke-Command -ComputerName LAB-FS1 -ScriptBlock { "rescan", "select volume=c", "extend" | diskpart }
Работает это так. Сначала PowerShell устанавливает удаленное соединение с сервером LAB-FS1 и запускает на нем локально набор команд, заключенный в фигурные скобки параметра -ScriptBlock. Этот набор в свою очередь последовательно передает команде diskpart три текстовых параметра, а diskpart выполняет (по очереди) повторное сканирование разделов, выбор раздела C:\ и расширение его до максимально возможного размера.

Как видите, скрипт крайне простой, но в то же время крайне полезный.
Рассмотрим, как правильно упаковать его для повторного использования.
+6
Сбор информации о рабочих станциях через Powershell
4 мин
46KТуториал
Сбор информации о рабочих станциях через Powershell.
Этот пост будет посвящен работе написанию скриптов на Powershell. Далее я предполагаю, что читатель уже сталкивался с написанием скриптов в windows среде. Итак:
Была у меня задача собрать некоторую информацию по пользовательским рабочим станциям в организации. Все станции в AD и пользователи тоже, что упрощает задачу. Есть контейнер, где находятся все станции, значит нужно пройтись по всем, взяв интересующую информацию, и отобразить результат. Раз так, то пишем скрипт. При написании, я стараюсь делать скрипт по частям. ИМХО для меня так проще и понятнее.
Этот пост будет посвящен работе написанию скриптов на Powershell. Далее я предполагаю, что читатель уже сталкивался с написанием скриптов в windows среде. Итак:
Была у меня задача собрать некоторую информацию по пользовательским рабочим станциям в организации. Все станции в AD и пользователи тоже, что упрощает задачу. Есть контейнер, где находятся все станции, значит нужно пройтись по всем, взяв интересующую информацию, и отобразить результат. Раз так, то пишем скрипт. При написании, я стараюсь делать скрипт по частям. ИМХО для меня так проще и понятнее.
+3
DFS Replication и «временные» файлы
2 мин
23KВсем привет!
Это моя первая публикация, надеюсь, что в дальнейшем буду писать часто.
Если что-то неправильно оформил, поправьте, я исправлю как надо.
В работе пришлось столкнуться с интересной особенностью работы DFS Replication. И хотя сам рассматриваемый вопрос не нов, набить на нем шишки могут многие.
Итак, у нас есть стабильно работающая среда, в которой успешно настроены и работают DFS-репликации. Создана репликационная группа, в нее добавлены все нужные серверы, топология корректна, расписание тоже, все хорошо… пока однажды новые файлы, добавленные в реплицируемую папку не перестают копироваться на удаленные серверы.
Для примера я сделал тестовую среду, в которой всего два сервера — LAB-DC1 и LAB-FS1. На каждом из них есть папка C:\DFSR, между которыми и должна проходить репликация.
Копируем в эту папку на LAB-DC1 два тестовых файла и видим, что на второй сервер отреплицировался только один.

Почему?
Это моя первая публикация, надеюсь, что в дальнейшем буду писать часто.
Если что-то неправильно оформил, поправьте, я исправлю как надо.
В работе пришлось столкнуться с интересной особенностью работы DFS Replication. И хотя сам рассматриваемый вопрос не нов, набить на нем шишки могут многие.
Итак, у нас есть стабильно работающая среда, в которой успешно настроены и работают DFS-репликации. Создана репликационная группа, в нее добавлены все нужные серверы, топология корректна, расписание тоже, все хорошо… пока однажды новые файлы, добавленные в реплицируемую папку не перестают копироваться на удаленные серверы.
Для примера я сделал тестовую среду, в которой всего два сервера — LAB-DC1 и LAB-FS1. На каждом из них есть папка C:\DFSR, между которыми и должна проходить репликация.
Копируем в эту папку на LAB-DC1 два тестовых файла и видим, что на второй сервер отреплицировался только один.

Почему?
+13
Автоматическое подключение сетевых МФУ с возможностью сканирования [Часть 2]
13 мин
96KKyocera M2035dn, Xerox WorkCentre 3615 и 6505DN
Как и обещал в первой части, за которую я успешно получил инвайт в песочнице, в этой заметке я покажу как подключить сетевые МФУ Kyocera M2035dn, Xerox WorkCentre 3615 и 6505DN, а в конце статьи добавлю небольшой бонус с которым любой скрипт связанный с сетью становится лучше.

Как бы небыли прекрасны гомогенные инфраструктуры, пусть даже в части принтеров и мфу, реальность зачастую ставит свои условия. В то время как пользователи сами в полный рост подключали и успешно сканировали с некогда проблемных МФУ HP, в компанию приехал японский гость — Kyocera M2035dn.
Kyocera M2035dn
Приехал как всегда не в мое уютное админское логово, а сразу на объект и как и мфу от HP, в глаза его я, если честно, даже не видел.
Первым делом качаем драйвер и смотрим содержимое… ба, знакомые все люди:

Есть пометка о том, что подключение сетевое (network) и есть ID!
+21
Jump Start в PowerShell (часть II)
10 мин
176KТуториал
Кто, если не ты? Когда, если не сейчас?

В предыдущей части мы научились запускать PowerShell, разобрались с политикой выполнения сценариев. Поняли, что такое командлеты, знаем, как передавать их по конвейеру и как получить их свойства. Узнали, что PowerShell имеет огромный Help.
В этой части мы разберёмся с переменными, узнаем, что они за типы и как к ним обращаться, как их сравнивать и выводить всевозможными способами. Обязательно разберёмся с циклами и напишем несколько функций.

В предыдущей части мы научились запускать PowerShell, разобрались с политикой выполнения сценариев. Поняли, что такое командлеты, знаем, как передавать их по конвейеру и как получить их свойства. Узнали, что PowerShell имеет огромный Help.
В этой части мы разберёмся с переменными, узнаем, что они за типы и как к ним обращаться, как их сравнивать и выводить всевозможными способами. Обязательно разберёмся с циклами и напишем несколько функций.
+13
Автоматическое подключение сетевых МФУ с возможностью сканирования [Часть 1]
8 мин
173KHP LaserJet 1522, 1536, 3052/3055, 300/400 Color...
Я думаю, многим системным администраторам известны описанные в заголовке мфу, отличаются они, в первую очередь, не очень удобной установкой и от этого имеют дурную славу. Однажды, копируя на очередной компьютер сквозь узкий канал пакет fullsolution для мфу весом около 300 мегабайт, идея разобрать этот инсталлятор и автоматизировать установку вылезла попапом на глаза — работу пришлось приостановить.

Разбором драйвера я занимался уже около полутора лет назад, в то время интернет на эту тему был совершенно пуст. Сейчас быстро погуглил по теперь уже известным мне ключевым словам утилит и нашел немного разрозненной информации. Несмотря на это, я решил. что собранная в одно место информация все равно не помешает, при том, что в этом посте она более полная.
+29
Jump Start в PowerShell (часть I)
5 мин
253KТуториал
Только автоматизация. Только PowerShell.

В качестве хобби и при наличии времени преподаю студентам в УКИТ (бывший Московский государственный колледж информационных технологий). На данный момент у меня мало времени, чтобы уделить его группе студентов, зато вполне достаточно, чтобы подготовить пост здесь, на Хабре.
Я работаю системным администратором в крупной не ИТ-компании с большой завязкой на ИТ ресурсы. По роду деятельности представляется решать большое количество однотипных задач по обслуживанию пользователей.
С языком PowerShell познакомился около двух лет назад, но вплотную занялся им лишь спустя год, не осознав поначалу его огромных возможностей. В статье, прежде всего, я буду ориентироваться на тех, кто хочет начать работать с PowerShell, но пока не доверяет ему или не знает, с какой стороны подступиться к этому чуду.
Внимание: PowerShell вызывает привыкание.

Предисловие
В качестве хобби и при наличии времени преподаю студентам в УКИТ (бывший Московский государственный колледж информационных технологий). На данный момент у меня мало времени, чтобы уделить его группе студентов, зато вполне достаточно, чтобы подготовить пост здесь, на Хабре.
Я работаю системным администратором в крупной не ИТ-компании с большой завязкой на ИТ ресурсы. По роду деятельности представляется решать большое количество однотипных задач по обслуживанию пользователей.
С языком PowerShell познакомился около двух лет назад, но вплотную занялся им лишь спустя год, не осознав поначалу его огромных возможностей. В статье, прежде всего, я буду ориентироваться на тех, кто хочет начать работать с PowerShell, но пока не доверяет ему или не знает, с какой стороны подступиться к этому чуду.
Внимание: PowerShell вызывает привыкание.
+28
Отслеживаем удаление файлов на PowerShell
11 мин
28KТуториал
Привет, Хабр! Тема моего поста уже поднималась здесь, но мне есть, что добавить.
Когда наше файловое хранилище разменяло третий терабайт, все чаще наш отдел стал получать просьбы выяснить, кто удалил важный документ или целую папку с документами. Нередко это происходит по чьему-то злому умыслу. Бэкапы — это хорошо, но страна должна знать своих героев. А молоко вдвойне вкусней, когда мы можем написать его на PowerShell.
Пока разбирался, решил записать для коллег по цеху, а потом подумал, что может пригодиться кому-то еще. Материал получился смешанный. Кто-то найдет для себя готовое решение, кому-то пригодятся несколько неочевидные методы работы с PowerShell или планировщиком задач, а кто-то проверит на быстродействие свои скрипты.
В процессе поиска решения задачи прочитал статью за авторством Deks. Решил взять ее за основу, но некоторые моменты меня не устраивали.
Когда наше файловое хранилище разменяло третий терабайт, все чаще наш отдел стал получать просьбы выяснить, кто удалил важный документ или целую папку с документами. Нередко это происходит по чьему-то злому умыслу. Бэкапы — это хорошо, но страна должна знать своих героев. А молоко вдвойне вкусней, когда мы можем написать его на PowerShell.
Пока разбирался, решил записать для коллег по цеху, а потом подумал, что может пригодиться кому-то еще. Материал получился смешанный. Кто-то найдет для себя готовое решение, кому-то пригодятся несколько неочевидные методы работы с PowerShell или планировщиком задач, а кто-то проверит на быстродействие свои скрипты.
В процессе поиска решения задачи прочитал статью за авторством Deks. Решил взять ее за основу, но некоторые моменты меня не устраивали.
- Во-первых, время генерации отчета за четыре часа на 2-терабайтном хранилище, с которым одновременно работает около 200 человек, составило около пяти минут. И это притом, что лишнего у нас в логи не пишется. Это меньше, чем у Deks, но больше, чем хотелосю бы, потому что...
- Во-вторых, все то же самое нужно было реализовать еще на двадцати серверах, гораздо менее производительных, чем основной.
- В-третьих, вызывал вопросы график запуска генерации отчетов.
- И в-четвертых, хотелось исключить себя из процесса доставки собранной информации конечным потребителям (читай: автоматизировать, чтобы мне с этим вопросом больше не звонили).
Но ход мыслей Deks мне понравился...
+20
Пишем свой пакет для Chocolatey
6 мин
19K
Chocolatey — пакетный менеджер для windows сильно облегчающий процедуру установки программ, а уж сколько он экономит времени. Про это чудо уже писали на хабре и даже было показано как написать свой пакет для него, но там было больше ручной работы, я же хочу показать как можно немного упростить это дело.
+8
Работа с алертами в System Center Operations Manager, используя свой коннектор
5 мин
13KСтатья расчитана на людей, хорошо знакомых с продуктом System Center Operations Manager.
Терминология:
SCOM — вместо полного названия;
Алерт — то же самое, что alert. Просто хорошего аналога в русском языке нет.
В SCOM, в отличие от многих других систем мониторинга, алерт является самостоятельным объектом. В зависимости от настроек, проверка может быть уже зеленой, но алерт так и оставаться активным. Алерты используются и обрабатываются:
Терминология:
SCOM — вместо полного названия;
Алерт — то же самое, что alert. Просто хорошего аналога в русском языке нет.
Введение
В SCOM, в отличие от многих других систем мониторинга, алерт является самостоятельным объектом. В зависимости от настроек, проверка может быть уже зеленой, но алерт так и оставаться активным. Алерты используются и обрабатываются:
- оператором (человеком)
- стандартными коннекторами (например, Command Channel)
- внешними коннекторами (например, коннектор для синхронизацией с системой Service Desk)
+1
Скрипт исправления даты установки пароля пользователя в AD
4 мин
9.7KВсем привет!
Иногда возникает ситуация, когда надо пользователю изменить дату установки пароля в Active Directory. Представляю скрипт. Наверняка многим пригодится.
Под катом описание, использование и особенности.
Иногда возникает ситуация, когда надо пользователю изменить дату установки пароля в Active Directory. Представляю скрипт. Наверняка многим пригодится.
set-ADUserPswDate.ps1
# Основной скрипт изменения даты установки пароля по файлу или по учетной записи пользователя.
# Автор Лужин Кирилл
# luzhin.kirill@yandex.ru
Add-PSSnapin Quest.ActiveRoles.ADManagement;
$gsFilename = "c:\scriptps\set-ADUserPswDate.txt";
$giRows = (Get-Content -LiteralPath $gsFilename).Count;
$giX = 0;
$giMinimumSleep = 218;
$giMaximumSleep = 884;
$gtBeginDay = "08:00:00";
$gtEndDay = "19:00:00";
$today_date = Get-date -Format "dd.MM.yyyy";
function set-password($lsAccount) {
Set-QADUser $lsAccount -ObjectAttributes @{pwdLastSet=0} | Out-Null;
Set-QADUser $lsAccount -ObjectAttributes @{pwdLastSet=-1} | Out-Null;
}
function get-password($lsAccount) {
get-qaduser $lsAccount -IncludedProperties pwdLastSet | % {$lsPwdLastSet = $_.pwdLastSet;}
$lsPwdLastSet = $lsPwdLastSet.AddHours(3);
$lsPwdLastSetNorm = get-date -uformat '%d.%m.%Y %R' -Date $lsPwdLastSet;
return $lsPwdLastSetNorm;
}
function send-eMail($to,$toCc,$text="",$subject="Изменение даты установки пароля",$toBcc="admin3@domain.com") {
write-host "Кому: $to | тема: $subject | текст: $text";
$Enc = [Text.Encoding]::UTF8;
Send-MailMessage -to $to -from "admin1@domain.com" -Bcc $toBcc -Cc $toCc -subject $subject -smtpServer MAIL-SRV -BodyAsHtml $text -Encoding $Enc;
}
function get-sleepRandom($liMinimum, $liMaximum) {
$giSleep = Get-Random -minimum $liMinimum -maximum $liMaximum
# $giSleep = 30;
$giSleepS = $giSleep % 60;
$giSleepM = $giSleep - $giSleepS;
$giSleepM = $giSleepM / 60;
$gdFuture = (Get-Date).AddSeconds($giSleep);
write-host "Ждем"$giSleepM" минут "$giSleepS" секунд (будет выполнен "$gdFuture")...";
Start-Sleep -Seconds $giSleep
}
function isAtWork($ltBegin, $ltEnd) {
$lbAtWork = $FALSE;
$giDayOfWeek = (get-date).DayOfWeek.ToString('d');
if (($giDayOfWeek -gt 0) -and ($giDayOfWeek -lt 6)) {
$today_date_full = $today_date + " " + $ltBegin;
$today_date_full2 = $today_date + " " + $ltEnd;
write-host $today_date_full" - "$today_date_full2;
$a=[datetime]::parse($today_date_full);
$c=[datetime]::parse($today_date_full2);
$b = get-date;
if (($b -gt $a) -and ($b -lt $c)) {
write-host $b". Время позже 8:00 и раньше 19:00, пользователь может поменять пароль!";
$lbAtWork = $TRUE;
} else {
write-host "Время раньше 8:00 или позже 19:00, пользователь не может поменять пароль.";
}
} else {
write-host "Сегодня выходной, пользователя нет на работе.";
}
return $lbAtWork;
}
function update-password_wReport($lsAccount) {
write-host " ";
write-host "*"$lsAccount;
$gbAtWork = isAtWork $gtBeginDay $gtEndDay;
if ($gbAtWork) {
$gsPwdLastSet = get-password $lsAccount;
$lsText = "<tr><td style='border:1px solid RGB(200,200,200);'><strong>" + $lsAccount + "</strong></td><td style='border:1px solid RGB(200,200,200);'>" + $gsPwdLastSet + "</td>";
set-password $lsAccount;
$gsPwdLastSet = get-password $lsAccount;
$lsText = $lsText + "<td style='border:1px solid RGB(200,200,200);'>" + $gsPwdLastSet + "</td></tr>";
} else {
$lsText = "<tr><td style='border:1px solid RGB(200,200,200);'><strong>" + $lsAccount + "</strong></td><td style='border:1px solid RGB(200,200,200);'>Нет на работе</td><td style='border:1px solid RGB(200,200,200);'></td></tr>";
}
return $lsText;
}
$gsText = $gsText + "<table style='border-collapse:collapse; width:500px; font-family:Tahoma,Arial,Calibri;font-size:10pt;'>";
$gsText = $gsText + "<tr><td style='width:40%; border:1px solid RGB(200,200,200); text-align:center;'>Учетная запись</td>";
$gsText = $gsText + "<td style='width:130px; border:1px solid RGB(200,200,200); text-align:center;'>Было</td><td style='width:130px; border:1px solid RGB(200,200,200); text-align:center;'>Стало</td></tr>";
if ($ARGS[0] -ne $Null) {
$gsText = $gsText + (update-password_wReport $ARGS[0]);
} else {
Get-Content -LiteralPath $gsFilename |
% {
$gsText = $gsText + (update-password_wReport $_);
$giX = $giX + 1;
if ($giX -lt $giRows) {
get-sleepRandom $giMinimumSleep $giMaximumSleep;
}
}
}
$gsText = $gsText + "</table>";
if ($ARGS[1] -ne $Null) {
send-eMail $ARGS[1] "admin1@domain.com" $gsText;
} else {
send-eMail "admin1@domain.com" "admin2@domain.com" $gsText;
}
Под катом описание, использование и особенности.
-2
Ближайшие события
Предупреждение пользователей об истечении пароля и действия учётной записи
6 мин
18KВсем привет!
Столкнулись как-то с ситуацией, когда 1 января у многих пользователей истёк срок действия учётной записи и они были заблокированы. Соответственно не смогли работать, шквал телефонных звонков, начиная с утра 1-го числа. Было принято решение заранее предупреждать пользователей об истечении пароля и действия учётной записи по почте. С копией списка предупреждённых пользователей администратору.
Скрипты реализации под катом.
Столкнулись как-то с ситуацией, когда 1 января у многих пользователей истёк срок действия учётной записи и они были заблокированы. Соответственно не смогли работать, шквал телефонных звонков, начиная с утра 1-го числа. Было принято решение заранее предупреждать пользователей об истечении пароля и действия учётной записи по почте. С копией списка предупреждённых пользователей администратору.
Скрипты реализации под катом.
+5
Как проимпортировать неимпортируемое
5 мин
3.3KТуториал
Проблема, идея, и решение
Здравствуйте, дорогие мои детишечки. Спешу сообщить вам, что в мою голову пришла еще одна идея, которая вылилась вот в эту заметку. Идея, собственно говоря, пришла из проблемы, которую подкинула горячо мной любимая и уважаемая компания Microsoft и их новый продукт Windows Server 2012 R2. И тут я нисколько не иронизирую, мне они действительно нравятся. Но начнем по порядку.
Прежде всего отмечу, что я, кроме всего прочего еще и тренер по всякого рода продуктам Microsoft, и соответственно имею доступ к определенным плюшкам в виде готовых виртуальных машин для подготовки к курсам, в рамках учебного центра. И вот, собственно, решил я попробовать погонять новый сервер, ну и, как водится, развернуть на нем виртуалочки от одного курса. Выкачал эти машины, все подготовил, распаковал. И тут меня поджидало ужасное. Они категорически отказывались импортироваться.
-6
Как я сайт на powershell парсил
6 мин
25KПредисловие
Прежде всего хочу отметить, я не программист. Я админ, пока. Хотелось бы конечно зваться архитектором, но в обозримом пространстве подходящих вакансий, с адекватными требованиями, а главное, зарплатами за эти требования нет. А жаль.
Собственно говоря, в рамках этой заметки хочу рассказать о полезных плюшках новой версии Powershell. В частности, о возможности быстро и уверенно парсить веб-странички и делать это «параллельно».
+12
Поддержка чистой шары для обмена файлами с помощью Powershell
3 мин
18KRecovery Mode
В каждой организации есть сетевой ресурс для обмена данными между пользователями, в который доступ имеют все. Что делать, когда пользователи сами не удаляют временные файлы из своих папок в «обмене» и ресурс начинает занимать слишком много места?
Задача:
1) Автоматическое очищение папок пользователей на общем сетевом ресурсе с сохранением структуры каталогов до 1 уровня. В корне ресурса расположены папки по фамилиям пользователей.
2) Сохранение данных за прошедший день в папке «Вчера» (права пользователей «только чтение»). Это нужно на случай, если пользователь забыл забрать важный документ вчера.
3) Логирование ошибок копирования файлов. Для анализа.
4) Возможность быстро перенастроить скрипт для использования на другом сервер\папке.
Исходные данные:
1) Сетевая папка «Обмен» на //server/obmen, которая смотрит на D:\obmen
Решение:
Задача:
1) Автоматическое очищение папок пользователей на общем сетевом ресурсе с сохранением структуры каталогов до 1 уровня. В корне ресурса расположены папки по фамилиям пользователей.
2) Сохранение данных за прошедший день в папке «Вчера» (права пользователей «только чтение»). Это нужно на случай, если пользователь забыл забрать важный документ вчера.
3) Логирование ошибок копирования файлов. Для анализа.
4) Возможность быстро перенастроить скрипт для использования на другом сервер\папке.
Исходные данные:
1) Сетевая папка «Обмен» на //server/obmen, которая смотрит на D:\obmen
Решение:
+2
Деплой Zabbix-агентов на большое количество Windows-based серверов с помощью Powershell
4 мин
38KТуториал
Recovery Mode
Добрый день!
Недавно передо мной встала задача — быстро установить большое количество Zabbix-агентов на Windows-сервера.
Я решил, что это можно и нужно решать с помощью скриптов. В качестве «языка» я выбрал любимый мной (и не только мной!) Powershell.
Небольшой мануал Вы найдете под катом!
Недавно передо мной встала задача — быстро установить большое количество Zabbix-агентов на Windows-сервера.
Я решил, что это можно и нужно решать с помощью скриптов. В качестве «языка» я выбрал любимый мной (и не только мной!) Powershell.
Небольшой мануал Вы найдете под катом!
+4
Песочница средствами SCVMM
8 мин
21KС выходом System Center Virtual Machine Manager 2012 у нас появилась возможность создавать так называемые сервисы: т.е. штамповать виртуальные машины не по одиночке и даже не из шаблонов, а комбинировать разные профили, шаблоны, машины, а после — настраивать взаимосвязь между виртуальным оборудованием. Насмотревшись выступлений на TechEd'е, начитавшись статей и книжек, и, конечно, получив от начальства волшебное задание на одном из проектов, я решил, что имеющихся в SCVMM средств достаточно для создания сервиса полноценной песочницы, т.е. набора виртуальных машин, изолированных от остальной инфраструктуры предприятия, но при этом складно взаимодействующих друг с дружкой.
Но все оказалось не так гладко и красиво, как у ashapo на демонстрациях, поэтому милости прошу под кат за дозой обработки напильником.
Но все оказалось не так гладко и красиво, как у ashapo на демонстрациях, поэтому милости прошу под кат за дозой обработки напильником.
+2
Тонзиллэктомия ректально: работаем с AD в Powershell без AD cmdlets
23 мин
20KВ Windows Server 2008 впервые появились замечательные командлеты PowerShell для работы с ActiveDirectory. Эти прекрасные, логичные, интуитивно понятные и чрезвычайно мощные инструменты вызывали у меня чувство грусти, если не сказать — «досады»: они были недоступны мне, эникейщику непрофильной конторы. Все одиннадцать сетей, которые я обслуживал были построены на базе Windows 2003 R2.
Одиннадцать несвязанных доменов в одиннадцати несвязанных сетях в разных городах, разбросанных по Дальнему востоку. И ни в одной из них — ни то, что «Семёрки», даже «Висты» нет, что ставит крест на попытках использования AD cmdlets в связке с две тысячи третьей.

Задача была сформулирована следующим образом — «создать код, способный выполнять основные операции по управлению AD из сценариев PowerShell, исполняемый в Windows XP / 2003». О том, как она была решена, читайте под хабракатом (осторожно, костыли; много текста и кода).
Одиннадцать несвязанных доменов в одиннадцати несвязанных сетях в разных городах, разбросанных по Дальнему востоку. И ни в одной из них — ни то, что «Семёрки», даже «Висты» нет, что ставит крест на попытках использования AD cmdlets в связке с две тысячи третьей.

Задача была сформулирована следующим образом — «создать код, способный выполнять основные операции по управлению AD из сценариев PowerShell, исполняемый в Windows XP / 2003». О том, как она была решена, читайте под хабракатом (осторожно, костыли; много текста и кода).
+16
Вклад авторов
ruvds 343.0Nurked 183.0Sanctuary_s 158.0sahsAGU 150.8Tri-Edge 137.8thunderquack 130.0oldadmin 85.0ru_vds 76.8Lifailon 70.0eBuster 70.0