Установка Admin Center на Hyper-V Server

Установка Windows Admin Center и с созданием самописного сертификата.

msiexec /i .msi /qn /L*v log.txt SME_PORT=443 SSL_CERTIFICATE_OPTION=generate


Установка Windows Admin Center с существующим сертификатом.

msiexec /i .msi /qn /L*v log.txt SME_PORT= SME_THUMBPRINT= SSL_CERTIFICATE_OPTION=installed

Не вызывать msiexec из PowerShell с использованием относительной нотации пути (например, .\.msi). Удалить префикс .\ или указать полный путь к MSI-файлу.

Открывать с префиксом https

Репликация виртуалок в домене

Хосты — члены домена, в одной сети.
1. Разрешить репликацию на хосте-приёмнике. В Hyper-V Manager -> Hyper-V Settings -> Replication Configuration:
— Поставить галку возле Enable this computer as a Replica server.
— Поставить галку возле Use Kerberos (HTTP):
— Поставить точку возле Allow replication from any authenticated server.

2. Начать процесс репликации:
— Выбрать реплицируемую машину, в контекстном меню выбрать Enable replication.
— Указать хост-приёмник. Next.
— Поставить точку возле Use Kerberos authentication (HTTP). Next.
— Выбрать реплицируемые диски машины-донора. Next.
— Выбрать частоту обновления данных. Next.
— Выбрать создание только одной актуальной копии.
— Выбрать копирование через сеть, выбрать немедленный старт репликации. Next.
— Finish.

VirtualHere USB sharing on Windows Core

https://virtualhere.com/home — серверная часть (физический комп с расшариваемыми USB портами) ставится на кучу ОС — Linux, Windows, Android, OS X, NAS (QNAP, Synology, NetGear ReadyNAS, ASUSTOR, WesternDigital My Cloud).

— Клиентская часть бесплатна, покупная версия позволяет установить клиента в качестве службы. Без лицензии тоже устанавливается (как служба), но блокируется доступ к расшаренным на сервере устройствам.

— Серверная часть бесплатна, можно установить в качестве службы. Бесплатная версия видит все устройства в USB портах, но позволяет расшарить только одно  устройство (устройство выбирается в клиенте).

На Windows Core серверная часть работает. Требует соответствующего правила в файерволле.

New-NetFirewallRule -DisplayName "VirtualHere Server" -Direction Inbound -Protocol TCP -LocalPort 7575 -Action Allow

Разметка диска на PowerShell

Например — на Windows Server Core или Hyper-V Server.

  • Get-Disk 
  • Initialize-Disk -Number<disk number>
  • New-Partition -Disk Number <disk number> -UseMaximumSize │Format-Volume -FileSystem NFTS -NewFileSystemLabel myDrive
  • Get-Parition -DiskNumber <disk number> -PartitionNumber <partition number> │Set-Partition -NewDriveLetter <new drive letter>

При возникновении ошибки “Set-Partition: requested access path already in use”, использовать другую букву для обозначения диска.

Сохранение пароля в RDP сессии.

Несмотря на галку «сохранить пароль» в окне RDP сессии, система его не принимает со следующим сообщением об ошибке:

YOUR SYSTEM ADMINISTRATOR DOES NOT ALLOW THE USE OF SAVED CREDENTIALS TO LOG ON THE REMOTE COMPUTER.

Введение пароля вручную проходит.


Надо изменить настройки ЛОКАЛЬНОГО компьютера:

1.  gpedit.msc

2. Local Computer Policy -> Computer Configuration -> Administrative Templates -> System -> Credentials Delegation

3. Разрешить следующие настройки:

  • Allow delegating default credentials with NTLM-only server authentication.
  • Allow delegating default credentials.
  • Allow delegating saved credentials with NTLM-only server authentication.
  • Allow delegating saved credentials.

В список серверов, применительно к которым разрешается сохранять пароль ввести «TERMSRV/*»

4. gpupdate/force

Active RDS CALs raport

Win2k8

$filePath = "c:\temp\Terminal CALs "

$fileType = ".txt"

$timestamp = get-date -format "dd-MM-yyyy"

$fullPath = $filePath + $timestamp + $fileType

get-wmiobject win32_tslicensekeypack | select typeandmodel,issuedlicenses | Out-File -FilePath $fullPath


Win2k12

$filePath = "c:\temp\Terminal CALs "

$fileType = ".txt"

$timestamp = get-date -format "dd-MM-yyyy"

$fullPath = $filePath + $timestamp + $fileType

Get-WmiObject Win32_TSLicenseKeyPack | select typeandmodel,issuedlicenses | Out-File -FilePath $fullPath

Send-MailMessage -From 'Admin <admin@domain.com>' -To 'Manager<manager@domain.com>' -Subject 'Remote Licenses' -Body "Sending RDS Per CAL report" -Attachments $fullPath -Priority High -DeliveryNotificationOption OnSuccess, OnFailure -SmtpServer 'exchange.domain.com'

Удаление сиротских SID-ов


Скрипт запускать из Posh окна с административными правами (.\script.ps1 -path d:\), в качестве параметра -path правильнее давать корень диска, поскольку наследованные права скрипт не удаляет.

Param(
  [Parameter(HelpMessage = 'Enter a directory or file path')]
    [ValidateScript({if ($_ -match '\\'){Test-Path $_}else{$True}})]
    [string]$path
)
$global:arr = @()
   Get-ChildItem -Path $path -Recurse | ForEach-Object -Process {
    $path = $_.fullname.Replace("[", "`[").Replace("]", "`]")
    $acl = Get-Acl -LiteralPath $path
    $sid = $acl.access | Where-Object -FilterScript {
    $_.identityreference -match 'S-1-.*' -and !($_.isinherited)
  }
if($sid)
{
    $sid| ForEach-Object -Process {
    $co = [pscustomobject]@{
    Path = $path
    RemovedSID = $_.identityreference
    }
  $co|Format-List
  $arr += $co
  $null = $acl.removeaccessrule($_)
}
  Set-Acl -LiteralPath $path -AclObject $acl
}
}
'- Report'
$arr|Format-Table -AutoSize

Редактируем список рассылки через Outlook

Создаём список рассылки (Distribution List) через ECP или ADUC, владельцем назначаем ответственного товарища :-). Таким образом у товарища будет право на изменение состава списка через ECP. Для возможности редактирования списка в Outlook продолжим — в powershell консоли  создаём новую группу для роли менеджера:

New-RoleGroup DistributionGroupManagement -Roles "Distribution Groups"

Затем в эту группу добавляем этого ответственного:

Add-RoleGroupMember DistributionGroupManagement -Member exchange-test

Вот после этого можно через Адресную книгу в Outlook менять состав списка, в котором ответственный товарищ поставлен в качестве хозяина (Owner). 


PS. Ответственных товарищей может быть и группа. 

PPS. Get-RoleGruppMember и Remove-RoleGruppMember тоже работают :-)