Поиск

четверг, 11 апреля 2019 г.

Объединение виртуальных машин Hyper-V в группы.

Проблема:
В Hyper-V в графическом интерфейсе отсутствует возможность объединения серверов в группы для удобства управления.

Решение:
В решении данной проблемы поможет функционал PowerShell. ❤️

Существуют два типа групп:
VMCollectionType - группа виртуальных машин;
ManagementCollectionType - группа управления (корневая группа).

Создание корневой группы:
New-VMGroup -Name TEST -GroupType ManagementCollectionType
New-VMGroup -Name PRODUCTION -GroupType ManagementCollectionType

Создание локальной группы:
New-VMGroup -Name DC -GroupType VMCollectionType
New-VMGroup -Name EXCHANGE-P -GroupType VMCollectionType
New-VMGroup -Name LINUX-P -GroupType VMCollectionType
New-VMGroup -Name LINUX-T -GroupType VMCollectionType

Включение локальной группы в корневую:
Add-VMGroupMember -VMGroup (Get-VMGroup PRODUCTION) -VMGroupMember (Get-VMGroup DC)
Add-VMGroupMember -VMGroup (Get-VMGroup PRODUCTION) -VMGroupMember (Get-VMGroup EXCHANGE-P)
Add-VMGroupMember -VMGroup (Get-VMGroup PRODUCTION) -VMGroupMember (Get-VMGroup LINUX-P)
Add-VMGroupMember -VMGroup (Get-VMGroup TEST) -VMGroupMember (Get-VMGroup LINUX-T)

Включение виртуальных машин в локальную группу:
Add-VMGroupMember -VMGroup (Get-VMGroup DC) -VM (Get-VM TMNSV0010)
Add-VMGroupMember -VMGroup (Get-VMGroup DC) -VM (Get-VM TMNSV0020)
Add-VMGroupMember -VMGroup (Get-VMGroup EXCHANGE-P) -VM (Get-VM TMNSV0005)
Add-VMGroupMember -VMGroup (Get-VMGroup EXCHANGE-P) -VM (Get-VM TMNSV0015)
Add-VMGroupMember -VMGroup (Get-VMGroup LINUX-P) -VM (Get-VM TMNSV0012)
Add-VMGroupMember -VMGroup (Get-VMGroup LINUX-P) -VM (Get-VM TMNSV0014)
Add-VMGroupMember -VMGroup (Get-VMGroup LINUX-T) -VM (Get-VM TMNSV0047)

Посмотреть список виртуальных машин на хосте и принадлежность к группе:
Get-VM | ft Name, Groups -AutoSize

Посмотреть список виртуальных машин в указанной группе с VMCollectionType:
Get-VMGroup -Name LINUX-P

Посмотреть список групп VMCollectionType  входящих в ManagementCollectionType, со списком виртуальных машин:
Get-VMGroup -Name PRODUCTION | Select-Object -ExpandProperty VMGroupMembers

Примеры использования:

Запуск виртуальных машин в группе:
Start-VM -VM (Get-VMGroup EXCHANGE).VMMembers

Отключение на контроллерах домена сервиса интеграции синхронизации времени:
(Get-VMGroup DC).VMMembers | Get-VMIntegrationService -Name “Time Synchronization” | Disable-VMIntegrationService

понедельник, 8 апреля 2019 г.

Проверка соответствия ''железа'' для Hyper-V.

Требования к ''железу''.

Обязательный функционал CPU для работы Hyper-V:
- Поддержка Intel VT или AMD-V;
- 64-битный CPU (SLAT, second-level address translation);
- Поддержка Data Execution Prevention.

Требования к оперативной памяти:
- Минимум 4 ГБ ОЗУ.

Подробнее о требованиях для работы Hyper-V: Прочитать


Проверка соответствия требований для Hyper-V в Windows.

1. С использованием данных при исполнении в CMD с помощью systeminfo:

PS C:\pwsh>  Systeminfo | select-string -pattern "виртуальной","Виртуализация","Преобразование","предотвращение"

Подробнее о Select-String: Прочитать

Пример вывода:



Требования Hyper-V:
Расширения режима мониторинга виртуальной машины: Да
Виртуализация включена во встроенном ПО: Да
Преобразование адресов второго уровня: Да
Доступно предотвращение выполнения данных: Да

или

Hyper-V Requirements:
VM Monitor Mode Extensions: Yes
Virtualization Enabled in Firmware: Yes
Second Level Address Translation: Yes
Data Execution Prevention Available: Yes


2. Через стороннюю утилиту Coreinfo от Марка Руссиновича: Скачать

Переходим в директорию с утилитой и запускаем команду с ключом:

PS C:\TEMP\Coreinfo> coreinfo.exe -v

понедельник, 1 апреля 2019 г.

VMware Workstation не работает одновременно с Microsoft Hyper-V.


Проблема:

При попытке запустить виртуальную машину из VMware Workstation на рабочей станции с Hyper-V вы получите ошибку: "VMware Player and Device/Credential Guard are not compatible. VMware Player can be run after disabling Device/Credential Guard. Please visit http://www.wmware.com/go/turnoff_CG_DG for more details."


Решение:

Hyper-V можно включать и выключать, без удаления сервиса, для возможности работы с VMware Workstation.

Для выключения Hyper-V, откройте PowerShell или командную строку с повышенными правами, запустите:
bcdedit /set hypervisorlaunchtype off

Важно! Перезагрузите операционную систему.

Для включения Hyper-V, по аналогии и не забудьте перезагрузить ОС:
bcdedit /set hypervisorlaunchtype auto

Также можно добавить в меню загрузки операционной системы возможность выбора включения и отключения Hyper-V:


Добавление в загрузочное меню "Включение Hyper-V":
bcdedit /copy {current} /d "Hyper-V Enable"
bcdedit /set {уникальный идентификатор} hypervisorlaunchtype auto

Добавление в загрузочное меню "Отключение Hyper-V":
bcdedit /copy {current} /d "Hyper-V Disable"
bcdedit /set {уникальный идентификатор} hypervisorlaunchtype off

суббота, 30 марта 2019 г.

Установка Remote Server Administration Tools (RSAT) в Windows 10.


RSAT - средства удаленного администрирования сервера для Windows 10 включают диспетчер серверов, оснастки консоли управления (MMC), консоли, командлеты и поставщики Windows PowerShell, а также программы командной строки для управления ролями и компонентами в Windows Server.

Для установки открываем PowerShell с правами администратора и выполняем:
Get-WindowsCapability -Name RSAT* -Online | Add-WindowsCapability -Online

воскресенье, 24 марта 2019 г.

Запуск скриптов PowerShell без отображения окна консоли.

Содержимое скрипта (*.ps1):

############# Скрытие консоли PowerShell ###########
# ==================================================
# .Net метод для скрытия/отображения консоли в фоновом режиме:
Add-Type -Name Window -Namespace Console -MemberDefinition '
[DllImport("Kernel32.dll")]
public static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, Int32 nCmdShow);
'
# ==================================================
# Скрываем консоль - "0".
# Например, активизация окна и отображение его свернутым - "6":
# ==================================================
$hideconsole = [Console.Window]::GetConsoleWindow()
[Console.Window]::ShowWindow($hideconsole, 0)

четверг, 14 марта 2019 г.

Исправление индексации баз данных Exchange 2013/2016.

Проблема:

Иногда случается, что индекс содержимого базы данных Exchange ломается. Первое с чем сталкиваются пользователи - это сбой при попытке поиска элементов в клиенте Outlook, как локально, так и через Outlook Web Access.

Неполадки остаются без внимания, когда остальные службы работают нормально, однако в конечном итоге отсутствие индекса вызывает проблемы. Например, если используется группа доступности базы данных - Database Availability Group (DAG), возникает проблема с переключением баз данных.

Решение:

Первое, убедитесь в функционировании служб:
- “Microsoft Exchange Search”;
- “Microsoft Exchange Search Host Controller”.

Для DAG!

Диагностика:
1. Проверка статуса индексации баз данных:
Get-MailboxDatabaseCopyStatus * | where {$_.ContentIndexState -eq “Failed”}

Если при выводе «MailboxDatabaseCopyStatus» статус ContentIndex - “Failed”, исправляем «индекс».

Решение проблемы:
1. Проверка статуса индексации баз данных и исправление:
Get-MailboxDatabaseCopyStatus * | where {$_.ContentIndexState -eq “Failed”} | Update-MailboxDatabaseCopy -CatalogOnly

Передадим отфильтрованные выходные данные полученные при выполнении "Get-MailboxDatabaseCopyStatus" в командлет "Update-MailboxDatabaseCopy" с ключом "-CatalogOnly", чтобы повторно заполнить индекс базы данных почтовых ящиков.

2. Дождитесь завершения задачи, и снова проверьте состояние индекса:
Get-MailboxDatabaseCopyStatus * | fl ContentIndex*

Без DAG!

Диагностика:
1. Проверка статуса индексации баз данных:
Get-MailboxDatabaseCopyStatus * | where {$_.ContentIndexState -eq “Failed”}

Если при выводе «MailboxDatabaseCopyStatus» статус ContentIndex - “Failed and Suspend”, создаем новый «индекс».

Решение проблемы:
1. Останавливаем службы:
- “Microsoft Exchange Search”;
- “Microsoft Exchange Search Host Controller”.

В PowerShell:
Stop-Service -Name MSExchangeFastSearch, HostControllerService

2. Расположение базы данных:
Get–MailboxDatabase DB2Gb | select EdbFilePath

3. Переименовываем директорию с GUID базы данных, например, с именем:
CGER7751-F8G3-21XJ-K4562DFC321LW56.1.Single

4. Запускаем службы:
- “Microsoft Exchange Search”;
- “Microsoft Exchange Search Host Controller”.

В PowerShell:
Start-Service -Name MSExchangeFastSearch, HostControllerService

5. Дождитесь завершения задачи, и снова проверьте состояние индекса:
Get-MailboxDatabaseCopyStatus * | fl ContentIndex*

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

суббота, 2 марта 2019 г.

PowerShell - Обновление GAL, AL, OAB на сервере Exchange 2013/2016.

Windows PowerShell на локальном компьютере позволяет управлять параметрами Exchange сервера, путем создания удаленного сеанса PowerShell для Exchange.

Содержимое скрипта (*.ps1):

# ==================================================
### Запрашиваем учетные данные для подключения:
$UserCredential = Get-Credential -Credential domainname\admin 

# ==================================================
### Указание необходимых параметров подключения
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://servername/PowerShell/ -Authentication Kerberos -Credential $UserCredential 

# ==================================================
### Импорт командлетов Exchange в локальный сеанс Windows PowerShell, чтобы их можно было использовать.
Import-PSSession $Session -DisableNameChecking 

# ==================================================
### Обновление GlobalAddressList, AddressList, OfflineAddressBook
Get-GlobalAddressList | Update-GlobalAddressList
Get-AddressList | Update-AddressList 
Get-OfflineAddressBook | Update-OfflineAddressBook

# ==================================================
### Пауза на 5 секунд
Start-Sleep -Seconds 5 

# ==================================================
### Разрываем сессию с сервером
Remove-PSSession $Session

среда, 20 февраля 2019 г.

Включение вложенной виртуализации в Hyper-V

Вложенная виртуализация - это функция, которая позволяет создавать виртуальные машины Hyper-V (вложенные виртуальные машины) в другой виртуальной машине Hyper-V, работающей на хосте Hyper-V. Виртуальные машины работающие внутри виртуальной машины, называются
вложенными.

Варианты применения:
  • Обучение, тестирование, разработка;
  • Изолирование среды - вложенные виртуальные машины связаны в общую виртуальную сеть без влияния на основные виртуальные машины и сеть;
  • Построение частного облака.

Требования:
  • Старые версии Microsoft Windows не поддерживают вложенную виртуализацию, операционная система хоста должна быть не ниже Windows Server 2016 или Windows 10 (Anniversary update или более поздняя версия).
  • Физический сервер должен иметь совместимый CPU, который поддерживает соответствующие функции виртуализации. Только процессоры Intel с технологиями VT-x и EPT поддерживают вложенную виртуализацию. Процессоры AMD в настоящее время не поддерживают вложенную виртуализацию.

Основные ограничения:
  • Контрольные точки не могут быть применены к работающей виртуальной машине;
  • Живая миграция не выполняется для вложенной виртуальной машины;
  • Не работает изменение размера оперативной памяти вложенной виртуальной машины во время её работы.

Включение поддержки встроенной виртуализации на виртуальном процессоре виртуальной машины возможно только посредством PowerShell:
Set-VMProccesor -VMName TMNSV0017 -ExposeVirtualizationExtensions $true

Включение поддержки MacAddressSpoofing на виртуальном сетевом адаптере виртуальной машины для исключения проблемы наличия нескольких MAC-адресов на одном интерфейсе:

Get-VMNetworkAdapter -VMName TMNSV0001 | Set-VMNetworkAdapter -MacAddressSpoofing On

понедельник, 11 февраля 2019 г.

Удаленное подключение по SSH для использования PowerShell.

1. Устанавливаем клиентскую и серверную части запустив PowerShell с правами админа:
  
  Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 # Клиентская
  Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 # Серверная


2. Настройка серверной части:

# Запускаем серверную часть "OpenSSH SSH Server"
Start-Service sshd

# Включаем автозапуск службы "OpenSSH SSH Server":
Set-Service -Name sshd -StartupType 'Automatic'

  # Должно быть включенное правило с именем "OpenSSH-Server-In-TCP", проверяем:
Get-NetFirewallRule -Name *ssh*

# Проверяем наличие актуальной версии SSH для Windows 10:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'


3. Создаем через "CMD" символьную ссылку на установленный ранее PowerShell v.6 (по умолчанию в Windows 10 установлен PowerShell v.5):

mklink /D c:\pwsh "C:\Program Files\PowerShell\6"


4. Вносим изменения в файл "sshd_config" находящийся в директории "%ProgramData%\ssh":
PasswordAuthentication yes
Subsystem powershell c:\pwsh\pwsh.exe -sshs -NoLogo -NoProfile

5. Перезапускаем службу "OpenSSH SSH Server":
Restart-Service sshd


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

7. Открываем установленный Powershell на MacOS или Linux, подключаемся по ssh.

воскресенье, 6 января 2019 г.

Проверка "рукотворных" изменений на сервере Exchange 2013/2016.

1. Запустите командную консоль Exchange.

2. Воспользуйтесь командой:
Search-AdminAuditLog -StartDate “12/28/2018 11:00:00 AM” -EndDate “12/29/2018 12:00:00 AM” | ft CmdletName, CmdLetParametrs, Caller, RunDate

Дата начала поиска - Месец/День/Год.
-StartDate “12/28/2018 11:00:00 AM”

Дата окончания поиска - Месец/День/Год.
-EndDate “12/29/2018 12:00:00 AM”

Параметры вывода FormatTable - Когда, кто, название командлета, параметры командлета:
ft RunDate, Caller, CmdletName, CmdLetParametrs

четверг, 3 января 2019 г.

Уменьшение файла очереди писем Exchange 2013/2016.

Очередь писем расположена в директории:
C:\Program Files\Microsoft\Exchange Server\v15\TransportRoles\Data\Queue\

Файл очереди писем может разрастись в случае появления неполадок, например, отсутствия интернет канала.
Файл очереди писем после отправки писем не уменьшается, оставаясь раздутого размера.


Для создания новой очереди:

  1. Останавливаем «Microsoft Exchange Transport»;
  2. Переименовываем папку с очередью «Queue»;
  3. Запускаем «Microsoft Exchange Transport», очередь будет создана вновь.