Microsoft делает все возможное, чтобы PowerShell был идеальным выбором для опытных пользователей и разработчиков систем автоматизации. Прошли времена компиляции кода в .NET, чтобы сделать то же самое, теперь вам просто нужны notepad.exe и google. Мы большие поклонники этого в офисе, тем более что консоль управления Exchange 2007 НЕ включает в себя все, что вы можете делать в PowerShell. Microsoft преднамеренно не смогла реализовать вещи, которые выполняются только изредка, проще разрабатывать таким образом, что прямо вынуждает их использовать, если у вас есть что-то похожее на сложную среду.
Управление продуктами нового поколения Microsoft (Win7, Windows Server 2008, Exchange 2007/2010, SQL Server 2008) - все они имеют очень богатые возможности PowerShell. Как только Remote Powershell (PowerShell 2.0 IIRC) будет развернут с Server 2008 R2, он станет еще БОЛЬШЕ полезным для разработчиков средств автоматизации.
Что мы с этим сделали:
- Создайте веб-страницу для делегирования определенных задач администратора пользователям службы поддержки. Веб-страница запускает команды, которые выполняются в PowerShell. Вещи это делает:
- Создание и удаление учетных записей пользователей, включая подготовку почтовых ящиков Exchange 2007 и домашних каталогов.
- Разблокирует заблокированные аккаунты
- Создать / удалить группы
- Добавить / удалить пользователей из групп
- Перемещение пользователей между почтовыми хранилищами
- Установить пароли
- Возьмите выдержки из системы ERP и перенесите данные глобальной адресной книги в Active Directory каждую ночь.
- Решите проблему LegacyExchangeDN, которая возникла при переходе с Exchange 2003 на Exchange 2007. Пришлось добавить адрес X500 всем, кто был на Exchange 2003. Довольно короткий скрипт PowerShell исправил это.
- Создание сценариев «групповых почтовых ящиков» (общих почтовых ящиков в Exchange, где несколько пользователей имеют доступ к почтовому ящику), в противном случае процесс выполняется вручную, в зависимости от характера данных, которые нам нужны, перед тем, как их выбросить. Это значительно стандартизировало настройку этих почтовых ящиков.
- Создал скрипт, который прошел через все готовые машины, сбрасывая определенный раздел реестра и перезапуская сервис. Это заняло 18 часов, но работа была выполнена.
Так что да, PowerShell будет с нами довольно долго.
РЕДАКТИРОВАТЬ : Добавление образца кода, так как он был запрошен
$ Список = Import-CSV ( "groupusers.csv")
$ Lastseengroup = $ список [0] .group
$ ADGroupPrefix = "grp.netware."
$ ADGroupSuffix = "{отредактировано - в формате, ou = groups, dc = domain, dc = domain, dc = domain}"
Список участников Clear-Variable
Clear-Variable unknownusers
foreach ($ entry в $ list) {
if ($ ($ entry.group) -ne $ lastseengroup) {
echo "наткнулся на новую группу $ ($ entry.group), фиксируя изменения в $ lastseengroup"
$ Новая_группа = $ ADgroupPrefix + $ lastseengroup
$ Newgroupdn = ' "' + "сп = $ новая_группа $ ADGroupSuffix" +"'
echo "получение DN для $ newgroup"
$ Существующая группа = dsquery группа domainroot -name $ newgroup
if (($ существующая группа -ne $ нуль)) {
dsmod group $ newgroupdn -chmbr $ список участников
} еще {
dsadd group $ newgroupdn -scope u -secgrp yes -members $ memberlist -desc "Группа, импортированная из eDirectory"
}
Список участников Clear-Variable
}
$ User = get-user $ ($ entry.member) -ErrorAction SilentlyContinue
if ($ User.isvalid) {
$ UserDN = $ User.distinguishedname
$ memberlist = $ memberlist + '"' +" $ UserDN "+ '"'
} еще {
$ unknownusers = $ unknownusers + $ ($ entry.member)
}
$ Lastseengroup = $ ($ entry.group)
}
dsadd group "cn = $ ADGroupPrefix $ lastseengroup $ ADGroupSuffix" -scope u -secgrp yes -members $ memberlist
Это берет файл CSV, созданный с помощью Perl-скрипта, и обновляет набор групп. Если группа уже существует, она заменяет членство на указанное в файле. Если группа не существует, она создает ее. Это односторонняя синхронизация. Кроме того, не совсем в производстве, но близко.