Перейти к содержимому

rdp

Как сбросить все зависшие или в состоянии disconnect сессии в rpd rds ferma со всех хостов разом.

Задача отключить всех зависших или отключённых пользователей от терминальной фермы со всех (rdsh host) хостов.

 

$dtstamp = Get-Date -Format "yyyy-MM-dd"
$RDSCollection = "Farm"
$activbrocer = if (Get-RDConnectionBrokerHighAvailability -ConnectionBroker  "HWRDCB01.adminbd.ru")
{Get-RDConnectionBrokerHighAvailability -ConnectionBroker  "HWRDCB01.adminbd.ru"}
else 
{Get-RDConnectionBrokerHighAvailability -ConnectionBroker  "HWRDCB02.adminbd.ru"}



$server = Get-RDSessionHost -CollectionName $RDSCollection -ConnectionBroker $activbrocer.ActiveManagementServer 
$server=$server.SessionHost

foreach($servers in $server) {



$ts = qwinsta /server:$servers
    $td = ($ts | where { ($_ -like "*Disc*" -or $_ -like "*Диск*" -or $_ -like "*ЁбЄ*" ) -and $_ -notlike "*services*"})
    $tdselect = $td # Для отладки или внесения в лог: Login Id State
        $td = $td -ireplace ("[a-z][0-9]","") # убираем логины содержащие цифры
    $td = 
Читать далее

Как сделать плановую перезагрузку серверов RD host windows 2016, со снятием нагрузки и возвращением её после ребута.

Задача: есть 7 серверов rd host sesion . Необходимо раз в неделю перезагружать сервер.

Скрипт по снятию подключений с rd host. Запускается в 18-00

Скрипт для запуска через cmd stop rdsh to day.bat

powershell -NoLogo -ExecutionPolicy Bypass -File "%~dp0\stop rdsh to day.ps1"
$dp0         = ($MyInvocation.MyCommand.Path | Split-Path -Parent)
#$dp0 = "C:\Scripts\Restart-RDSH"
$RDSCollection = "Farm"
$activbrocer= Get-RDConnectionBrokerHighAvailability 


# Get the current day
$date = Get-Date;

# determine the day, month, and year
$curDay = $date.DayOfWeek;
$curMonth = $date.Month;
$curYear = $date.Year;

# get total days in month
$totalDaysInMonth = [DateTime]::DaysInMonth($curYear, $curMonth);

switch($curDay){
    "Monday" {
        # this is where we want to 
Читать далее

Как сделать триггер в zabbix(забикс) для мониторинга хоста rds sesion host allow new connections. Включен или выключены новые подключения

Задача мониторить включено или выключено на ферме Windows rds 2016 новые подключения(allow new connections).

Скрипт для забикс на хосты

get-allowednewconnection.ps1

(Get-RDSessionhost -CollectionName farm -ConnectionBroker rdcb01.adminbd.ru | Where-Object {$_.SessionHost -eq [System.Net.Dns]::GetHostByName($env:computerName).hostname}).NewconnectionAllowed

Прописываем в конфиг

UserParameter = allowednewconnection, powershell -File "C:\Program Files\Zabbix Agent\get-allowednewconnection.ps1"

Скрипт на rdcb

$Results = @()
$collectionname='terminal'
$rdhost=Get-RDSessionhost -CollectionName $collectionname | Select SessionHost,NewConnectionAllowed

$collection=Get-RDSessionCollectionConfiguration -CollectionName $collectionname -LoadBalancing | Select RelativeWeight,SessionLimit,SessionHost 

Foreach ($ccitem in $collection) {
  $allstr = ($rdhost | Where {$_.SessionHost -eq $ccitem.SessionHost}).NewConnectionAllowed
  if ($allstr -eq "Yes") { $allow = 1 } else { $allow = 0 }
  $detailed = [ordered]@{
    '{#SESSIONHOST}' = $ccitem.SessionHost
    '{#NEWCONNECTIONALLOWED}' = $allow
    '{#RELATIVEWEIGHT}' = 
Читать далее

Как удалить логин и пароль от удалённого рабочего стола.

Пользователи сохраняют логин и пароль при доступе на терминальную ферму windows 2016 rds. Подключаются через vpn со своих домашних пк. Задача сделать скрипт что бы они могли самостоятельно могли удалить логин и пароль.

Запуск из командой строки

For /F "tokens=1,2 delims= " %G in ('cmdkey /list | findstr target="TERMSRV"') do  cmdkey /delete %H

Запуск из исполняемого файла bat

cmdkey /list | findstr target="TERMSRV"
pause
For /F "tokens=1,2 delims= " %G in ('cmdkey /list | findstr target="TERMSRV"') do  cmdkey /delete %H
pause

Для работы в русской windows

@echo off
chcp 65001
cmdkey /list | findstr target="TERMSRV"
pause
For /F "tokens=1,2 delims= 
Читать далее

Как перенести базу sql брокера rds windows 2016 фермы на другой сервер sql.

Схема:

Два брокера (rd connection Broker)

Два web access

Четыре session host

Надо перенести базу с виртуально сервера sql на физический.

Выполняем команду powershell

Get-RDConnectionBrokerHighAvailability

Смотрим какой брокер активный.

ConnectionBroker                  : {MSK-RDCB01.adminbd.ru, MSK-RDCB02.adminbd.ru}
ActiveManagementServer            : msk-rdcb02.adminbd.ru
ClientAccessName                  : MSK-RDCB.adminbd.ru
DatabaseConnectionString          : DRIVER=SQL Server Native Client 11.0;SERVER=msk-db01.adminbd.ru;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=MSK-RDS01
DatabaseFilePath                  : D:\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\MSKRDS01.mdf
DatabaseSecondaryConnectionString :

У меня оказался второй сервер.

Делаем бэкап базы на старом сервере и разворачиваем на новом.

На новом сервере даём права группе где состоят наши сервера.

Как перенести базу sql брокера rds windows 2016 фермы на другой сервер sql.

Даём права на базу для этой группы

Как перенести базу sql брокера rds windows 2016 фермы на другой сервер sql.

Выполнил команду

Set-RDDatabaseConnectionString -ConnectionBroker "MSK-RDCB02.adminbd.ru" -DatabaseConnectionString "DRIVER=SQL Server Native Client 11.0;SERVER=Shr-db02.adminbd.ru;Trusted_Connection=Yes;APP=Remote 
Читать далее

Как убрать ошибку Удаленное приложение RemoteApp отключено RemoteApp Disabled

Ошибка:
Подключение было разорвано, поскольку был получен непредусмотренный
сертификат проверки подлинности сервера от удаленного компьютера.
Повторите попытку подключения. Если проблема сохранится, обратитесь к владельцу
удаленного компьютера или к сетевому администратору.

Удалил на пк ветку

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Terminal Server Client\Servers]

Все заработало.

PS: Ошибка появилась после замены сертификата на ферме rds rdp. После перезагрузки брокеров ошибка пропала.

Как сбросить зависшую сессию с rdp терминала. rds

# Сброс зависших сессий, добавьте в расписание на своем скрипт сервере
Function RDP_Resetfailure($server){
  $ts = qwinsta /server
  $td = ($ts | where { ($_ -like "*Disc*" -or $_ -like "*Диск*" -or $_ -like "*ЁбЄ*" ) -and $_ -notlike "*services*"})
  $tdselect = $td # Для отладки или внесения в лог: Login Id State
  $td = $td -ireplace ("[^0-9]","") # оставляем только id сессий
  for($i=0; $i -lt $td.Count; $i++){
    Write-Host Reset RDP Failture session ID: $td[$i] $tdselect[$i]      #отладка просмотр id сессий
    rwinsta $td[$i] /server           # сброс зависших сессий, раскомментируйте эту строку
  }
}

$server = "MyRDPServer"
RDP_Resetfailure($server)