Как стать автором
Обновить

Комментарии 6

Настал тот момент когда необходимо уходить от всех зарубежных программ удаленного подключения, во всяком случае у нас в компании. [...] Поразмыслив какой функционал нам необходим для подключения 1-линии к пользователям поняли: [...] А значит нам будет достаточно простого powershell'a.

Мне нравится, как вы опустили кучу совершенно не важных вещей типа "на всех компьютерах Windows", "на всех компьютерах есть Remote Desktop", "к целевому компьютеру есть прямой сетевой доступ" и так далее.

я бы дополнил:

  • на всех целевых компьютерах Win8.1 Pro и выше;

  • на компьютере админа Win10 Pro и выше (для работы флага /shadow );

  • на целевых компьютерах разрешено подключение по RDP (по умолчанию нет);

  • на целевых компьютерах включены правила Firewall TCP Query User и UDP Query User;

  • все целевые компьютеры присоединены к домену;

  • админ имеет права локального администратора на всех целевых компьютерах.

И еще в брандмауэре правило для RdpSa.exe

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

При конвертировании в exe, высока вероятность что файлик с таким содержимым будет съеден антивирусом. В своем варианте я полностью убрал запрос логина/пароля, ps1 запускается от админа (или из консоли запущенной от админа) уже от имени администратора и без указания пользователя сеанс mstsc будет подключаться от его имени. Вместо этого сверху поле для поиска по имени (у нас это инв. номера) для сортировки отображаемого списка по мере ввода символов в это поле.

Чтобы удобно запускать ps1 через ПКМ от админа достаточно добавить одну ветку с 2 разделами в реестр:

[HKEY_CLASSES_ROOT\SystemFileAssociations.ps1\Shell\runas]
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\SystemFileAssociations.ps1\Shell\runas\command]
@="powershell.exe & "%1""

Проверить отсутствие выбора строки в ListBox лучше до присваивания отсутствующего значения переменной для имени компа ($ps или $comp):

$Button_connect.Add_Click({

    If ($ListBox_computers.SelectedItem -ne $NULL){

        $comp = $ListBox_computers.SelectedItem.ToString()

$active_session.STATE а не STATUS. И еще там закрывающей } для ForEach не хватает.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории