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

shadow RDP через powershell

1. Настроить GPO: разрешить админу подключаться без подтверждения пользователя
Policies -> Administrative Templates -> Windows components -> Remote Desktop Services -> Remote Session Host -> Connections (Административные шаблоны –> Компоненты Windows –> Службы удаленных рабочих столов – Узел сеансов удаленных рабочих столов –> Подключения) в пользовательской и «компьютерной» секциях GPO. Данной политике соответствует dword параметр реестра Shadow в ветке HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services.

Этой политикой можно настроить следующие варианты теневого подключения через теневое подключение RD Shadow:
2. запуск powershell скрипта с правами админа. Список терминальных серверов выделен красным.


Add-Type -assembly System.Windows.Forms

$ServerList = "TS1", "TS2", "TS3"
$Header = "SESSIONNAME", "USERNAME", "ID", "STATUS", "SERVER"

$dlgForm = New-Object System.Windows.Forms.Form
$dlgForm.Text ='Session Connect'
$dlgForm.Width = 400
$dlgForm.AutoSize = $true

$dlgBttn = New-Object System.Windows.Forms.Button
$dlgBttn.Text = 'Control'
$dlgBttn.Location = New-Object System.Drawing.Point(15,10)
$dlgForm.Controls.Add($dlgBttn)

$dlgChkBox = New-Object System.Windows.Forms.Checkbox 
$dlgChkBox.Location = New-Object System.Drawing.Point(100, 10) 
$dlgChkBox.Size = New-Object System.Drawing.Size(500,20)
$dlgChkBox.Text = "Interact with user"
$dlgForm.Controls.Add($dlgChkBox)

$dlgList = New-Object System.Windows.Forms.ListView
$dlgList.Location = New-Object System.Drawing.Point(0,50)
$dlgList.Width = $dlgForm.ClientRectangle.Width
$dlgList.Height = $dlgForm.ClientRectangle.Height
$dlgList.Anchor = "Top, Left, Right, Bottom"
$dlgList.MultiSelect = $False
$dlgList.View = 'Details'
$dlgList.FullRowSelect = 1;
$dlgList.GridLines = 1
$dlgList.Scrollable = 1

$dlgForm.Controls.add($dlgList)

# Add columns to the ListView
foreach ($column in $Header){
$dlgList.Columns.Add($column) | Out-Null
}

foreach ($server in $ServerList){
$(qwinsta.exe /server:$server| findstr "Active") -replace "^[\s>]" , "" -replace "\s+" , "," | ConvertFrom-Csv -Header $Header | ForEach-Object {
$dlgListItem = New-Object System.Windows.Forms.ListViewItem($_.SESSIONNAME)
$dlgListItem.Subitems.Add($_.USERNAME) | Out-Null
$dlgListItem.Subitems.Add($_.ID) | Out-Null
$dlgListItem.Subitems.Add($_.STATUS) | Out-Null
$dlgListItem.Subitems.Add($server) | Out-Null
$dlgList.Items.Add($dlgListItem) | Out-Null
}
}
$dlgBttn.Add_Click(
{
$SelectedItem = $dlgList.SelectedItems[0]
if ($SelectedItem -eq $null){
[System.Windows.Forms.MessageBox]::Show("Выберите сессию для подключения")
}else{
$session_id = $SelectedItem.subitems[2].text
If ($dlgChkBox.Checked -eq $true)
{
$(mstsc /shadow:$session_id /control /noconsentprompt)
}
else
{
$(mstsc /shadow:$session_id /noconsentprompt)
}
#[System.Windows.Forms.MessageBox]::Show($session_id)
}
}
)

$dlgForm.ShowDialog()



Источник: здесь

Комментариев нет:

Отправка комментария