четверг, 17 декабря 2015 г.

Пользователи Windows через командную строку

Всем здравствуйте!
Потребовалось создать учетную запись пользователя на очередной ноутбуке с Windows 8 Начальная. Т.к. оснастка Управление пользователями в данной версии отсутствует, то потянувшись к командной строке, в очередной раз понял, что не помню точно команды.

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

Итак, мои повседневные команды по этому случаю:)

Добавляем пользователя root с паролем Pass123
net user root Pass123 /ADD
Установить “пароль никогда не истекает”
WMIC USERACCOUNT WHERE Name='root' SET PasswordExpires=FALSE
Добавляем созданного пользователя в группу Администраторы

net localgroup АДМИНИСТРАТОРЫ root /add

Отключаем пользователей, которых не собираемся больше использовать

net user username /active:no
И вот теперь я с чистой душой могу удалить заметку из своих Гугл-Доков!

Лечим ошибку "Не удалось подключиться к службе клиент групповой политики"

Второй раз встречаюсь с такой проблемой. Ранее на Windows 7, сейчас на 8ке.
Суть в том, что при создании нового локального пользователя не получается войти под ним, что сопровождается следующей ошибкой "Не удалось подключиться к службе клиент групповой политики".

Ниже привожу решение, которое помогло мне.
Брал отсюда https://social.technet.microsoft.com/forums/ru-RU/86e85860-d16c-404e-b267-bd10deebfbdb/windows-windows-7-x86-rus-ent-sp1
  1. Грузимся под администратором, WIN+R, regedit.exe2)идем по пути HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost
  2. Создаем REG_MULTI_SZ с названием GPSvcGroup и параметром GPSvc4) создаем в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost раздел GPSvcGroup
  3. В разделе GPSvcGroup создаем еще два параметра:
  4. DWORD (32 бита) название AuthenticationCapabilities значение 0x00003020 (12320)
  5. DWORD(32 бита) название CoInitializeSecurityParam значение 0x00000001 (1)
  6. Перезагружаемся
Или создаем и запускаем соответствующий REG-файл, что быстрее:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost]
"GPSvcGroup"=hex(7):47,00,50,00,53,00,76,00,63,00,00,00,00,00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost\GPSvcGroup]
"AuthenticationCapabilities"=dword:00003020
"CoInitializeSecurityParam"=dword:00000001

понедельник, 14 декабря 2015 г.

Команды PowerShell для Exchange 2010 SP3

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

Команда 1
Показывает размеры имеющихся баз данных, а также количество свободного в них места

Get-MailboxDatabase -Status | ft name,databasesize, availablenewmailboxspace -auto

Команда 2
Получить список почтовых ящиков: имя ящика, количество писем, размер

Get-Mailbox | Get-MailboxStatistics | sort TotalItemSize -descending | ft DisplayName, TotalItemSize, ItemCount

Команда 2a
То же самое, только размер ящиков выводим в мегабайтах, при этом в колонке отображаются только цифры

Get-Mailbox -database "Mail*"| Get-MailboxStatistics | sort TotalItemSize -descending | ft DisplayName, @{label="Mailbox Size (MB)";expression={$_.TotalItemSize.Value.ToMB()}}, ItemCount

Команда 2b
Получить суммарный объем всех почтовых ящиков в базе данных с именем, соответствующей выражению «Mail*»

Get-Mailbox -database "Mail*"| Get-MailboxStatistics | select-object @{label="mbsize";expression={$_.TotalItemSize.Value.ToMB()}}|measure mbsize -sum
Команда 2c
Получить размер всех почтовых ящиков и преобразовать данные в HTML файл. Потом очень удобно из HTML файла копировать в Excel и там уже делать обработку.

Get-Mailbox -database "Main*"| Get-MailboxStatistics | select-object displayname, @{label="mbsize";expression={$_.TotalItemSize.Value.ToMB()}}|sort mbsize|ConvertTo-Html DisplayName, mbsize > c:\
Команда 3
Получить список локальных запросов на перемещение со статусом InProgress, при отображении результатов выводить только две колонки DisplayName и PercentComplete

Get-MoveRequest -MoveStatus InProgress | Get-MoveRequestStatistics | ft DisplayName, PercentComplete

Команда 4
Запустить обработку писем в заданном ящике в соответствии с политиками хранения

Get-Mailbox -Identity name.surname@domain.com | Start-ManagedFolderAssistant

Команда 5
Создать локальный запрос на перемещение всех почтовых ящиков, чье название начинается с «dmitry». Перемещение будет выполняться в базу MainExchangeDb. Важным параметром является -PrimaryOnly, если его не указать, то будет происходить перемещение не только основного почтового ящика, но и архива

Get-Milbox -Identity "dmitry*" | New-MoveRequest -TargetDatabase MainExchangeDb -PrimaryOnly
Команда 5a
Битый час пришлось мне потратить, чтобы получить эту команду. Она позволяет выполнить new-moverequest для ящиков определенного размера. Ключевым моментом здесь является повторяющийся Get-Mailbox в середине команды, который преобразует вывод Get-MailboxStatistics в формат, принимаемый New-MoveRequest

Get-Mailbox -database "Mailbox*" | Get-MailboxStatistics | Where {$_.TotalItemSize -lt 20Mb} | get-mailbox | New-MoveRequest -TargetDatabase MainExchangeDb -PrimaryOnly
Команда 5b
Перемещаем почтовый ящик с большим количеством поврежденных сообщений

get-mailbox -identity name.surname@domain.com | new-moverequest -targetdatabase MainExchangeDb -baditemlimit 100 -AcceptLargeDataLoss  -PrimaryOnly
Команда 5c
Количество одновременно перемещаемых ящиков можно изменить, отредактировав соответствующую строку в файле C:\Program Files\Microsoft\Exchange Server\V14\Bin\MSExchangeMailboxReplication.exe.config

MaxActiveMovesPerTargetMDB = «2»

Команда 6
А вот так смотрим, сколько еще ящиков осталось в базе данных, из которой переносим или в той, куда переносим

get-mailbox -database "Mailbox*"|ft displayname, database | measure-object|ft count

Команда 7
Поиск всех почтовых ящиков, чья архивная база данных соответствует заданному шаблону

get-mailbox | where {$_.ArchiveDatabase -like "Mail*"}

Команда 8
Создание архива в базе данных ArchiveDb для всех почтовых ящиков, чем размер не превышает 1Гб

Get-Mailbox -database "Mailbox*" | Get-MailboxStatistics | Where {$_.TotalItemSize -lt 1Gb} | get-mailbox|enable-mailbox -archive -archivedatabase "ArchiveDb"

Команда 9
Поиск всех почтовых ящиков в базе данных соответствующей шаблону «Mailbox*», при этом размер ящика лежит в диапазоне от 2Гб до 7Гб и displayname не соответствует Ivan Ivanov

Get-Mailbox -database "Mailbox*" | Get-MailboxStatistics | Where {($_.TotalItemSize -gt 2Gb) -and ($_.TotalItemSize -lt 7Gb) -and $_.DisplayName -notlike "Ivan Ivanov"}|sort displayname

Команда 10
Перенос только архивных почтовых ящиков из баз данных, соответствующих «Maii*» в базу данных ArchiveDb

Get-Mailbox | where {$_.ArchiveDatabase -like "Mai*"}|New-MoveRequest -ArchiveOnly -ArchiveTargetDatabase "ArchiveDb"

Команда 11
Задаю всех ящикам во всех базах данных значение «unlimited» для квот, когда будет остановлена отправка почты и когда прием.

Get-Mailbox | set-mailbox -prohibitsendquota "unlimited" -ProhibitSendReceiveQuota "unlimited"

Команда 11a
А так проверяю, что установленные в команде 12a свойства действительно были изменены

Get-Mailbox|ft name,prohibitsendquota,ProhibitSendReceiveQuota

Команда 12
Принудительное обновление OAB (Offline Address Book)

Get-OfflineAddressbook | Update-OfflineAddressbook
Get-ClientAccessServer | Update-FileDistributionService
Команда 13
Очищаем почтовый ящик user.name от писем, удаленных из папки Удаленные (т.е. recoverable items)

Search-Mailbox –identity user.name –SearchDumpsterOnly –DeleteContent

Команда 14
Если мы отключили только что почтовый ящик пользователя и хотим тут же его подключить другой учетке AD, то перезапускаем службу "Банк данных Exchange" и выполняем команду
Clean-MailboxDatabase  MainExchangeDb
, где MainExchangeDb является базой данных отключенного почтового ящика. В противном случае при попытке открыть заново подключенный ящик в OWA или через Outlook будет выдаваться ошибка

Команда 15
Удалить окончательно отключенные (Disabled)/удаленные (SoftDeleted) почтовые ящики

$DeletedMailbox = Get-MailboxStatistics -Database ArchiveDb | where {$_.DisconnectReason -eq "SoftDeleted"} | Select DisplayName, MailboxGuid, Database
$DeletedMailbox | ForEach { Remove-StoreMailbox -Database $_.Database -Identity $_.MailboxGuid -MailboxState SoftDeleted -Confirm:$False}
Команда 16
Импортируем данные из PST файла в архивный почтовый ящик
New-MailboxImportRequest -Mailbox user@domain.com -IsArchive -FilePath \\192.168.10.6\ExchangePSTFiles\Archive\user_first_6_month_2015.pst
Теперь смотрим статус запроса на импорт(подробно)
 Get-MailboxImportRequest|format-list
Смотрим список запросов на импорт
Get-MailboxImportRequest

среда, 2 декабря 2015 г.

История про двухлетний Exchange 2010 SP3

Здравствуйте, дорогие читатели!

Прошел уже месяц с того момента, как я опубликовал первую статью в своем IT-блоге, посвященную настройке SIP-линии с провайдером на АТС Panasonic TDE-100. Рад, что нашел силы и время вернуться к этому блогу и написать очередной пост, который скорее получился в художественном жанре, нежели в классическом IT-тематики. Тем не менее, т.к. это реальный опыт из жизни системного администратора, то надеюсь, что все описанное окажется полезным! А данная статья даст начало целому циклу в похожем формате.

Итак, история :)

Через два года после установки Exchange 2010 SP3 на виртуальную машину Hyper-V возник вопрос с нехваткой места под виртуальный жесткий диск этой самой машины. Изначально хард сервера, являющийся RAID 1 (зеркало) размещал на себе несколько виртуальных машин (виртуальные диски и сами конфигурации), в т.ч. Exchange. Позже  объем почтовой базы вырос (edb-файл с изначальных 200Гб и 80 почтовых ящиков превратился в 500Гб и 150 почтовых ящиков).

Самым простым способом высвободить место оказалось перености виртуальные машины физического диска, что я благополучно и делал в течение нескольких месяцев. Все это время параллельно предпринимались попытки делать очистку самой почтовой базы. Сначала ручным переносом почты пользователей из Exchange-ящика в локальный PST-файл. А затем, когда удалось высвободить 50Гб места в базе данных и рутинный способ надоел, то нашлись силы все же разобраться с новой возможностью Exchange 2010 политиками хранения.

Впрочем, высвобождение свободного места не остановило рост размера “.vhd” файла, а точнее “.avhd”. Т.к. машина в свое время была получена репликацией, то виртуальный диск состоял из базового файла vhd и файла-разницы avhd. Отметив для себя, что “.vhd” + “.avhd” в сумме прилично превышают размер объединенного файла (у меня vhd весил 400Гб и avhd столько же. Но суммарная емкость диска при этом составляла 650Гб, т.е. 150Гб лишних) решил высвободить АЖ! 15оГб.

На помощь пришло объединение файлов виртуальных жестких дисков. При этом на выполнение задачи было 6 часов до начала рабочего дня. Выключив виртуальную машину с Exchange и сделав актуальную резервную копию запустил процесс объединения дисков. И только тут, увидев “о Боги!”, что Hyper-V при объединении файлов не уменьшает размер avhd файла, а только растит vhd я понял, что запас места на физическом диске перед слиянием у меня должен был быть не меньше размера avhd!

Быстро просчитав в голове альтернативный вариант восстановления из резервной копии на другой жесткий диск (это был WD Green-серии на 3Тб, имевший хороший запас места, но также по предположению гораздо более медленный, чем исходный диск), приготовился получить сообщение от Hypev-V о невозможности объединить диски, которое не заставило себя ждать!!!

Итак, 7 часов утра в Москве, т.е. до начала рабочего дня осталось два часа, именно тогда начнут приходить менеджеры – основные пользователи почты. На руках у меня испорченная операцией слияния дисков виртуальная машина и свежая резервная копия Veeam. Запускаю восстановление из резервной копии. Предполагаемое время 2 часа! Про себя сказал “ура”, хотя в процессе время менялось и уже составляло около трех часов. Но в 9 утра на 90 процентах выполнения Veeam быстро сделал “рывок” и сразу пришел к заветным 100 процентам. И вот она настоящая ничем не замыленная радость!

Виртуальная машина запустилась успешно после 10-15 минут загрузки (для нее это нормально – загрузка самой системы происходить за 3 минуты и потом еще 12 минут со скрипом запускается сеть). В итоге после загрузки потерял только OWA с ошибкой ERR_RESPONSE_HEADERS_TRUNCATED. Тут же нашел в интернете, что решается перезапуском службы MSExchangeFBA, но в моем случае не сработало.

Т.к. OWA у нас в компании используют только, как дополнительное средство, то договорился с одним пользователем, что починю к завтра, т.к. потребуется перезагрузка почтового сервера (что и помогло в итоге). Второй пользователь давно хотел поставить себе дома Outlook для работы во внеурочное время. Ну вот я ему и помог, в связи со сложившейся ситуацией :)

То, что я делал дальше, и как решал вопрос с возвращением виртуальной машины Exchange 2010 Sp3 читайте в моей следующей статьи из цикла.