Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/103: Рейтинг темы: голосов - 103, средняя оценка - 4.86
Эксперт 1С
 Аватар для Phil
434 / 305 / 92
Регистрация: 28.05.2014
Сообщений: 1,246

Закрытие удаленных сеансов и отключение учетных записей пользователей

31.01.2019, 09:17. Показов 22664. Ответов 59
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый, день есть необходимость сваять следующее

по rdp подключаемся под неким пользователем (права пользователя удаленного рабочего стола)

из под него запускаем bat/ps файл который должен сделать следующее:

Закрыть все открытые сеансы пользователей (есть список имен в txt)
Отключить их учетные записи (также из этого списка)

что имеется на данный момент:

Выполнение чего-либо под правами админа:

PowerShell
1
2
3
4
$secpasswd = ConvertTo-SecureString "22" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("admin", $secpasswd)
$job = Start-Job -scriptblock {
}
Отключение записей пользователй
Windows Batch file
1
net user имя /active:no
Ссылку сюда - > Завершение сеанса пользователей на терминальном сервере (RDP)
Но не вижу там обращения именно к списку, там отрубает всех кроме указанного.

Подскажите как собрать в едино отключение + блокировка (по списку, под правами админа,но сдругом пользователя)

Добавлено через 1 минуту
KDE777, v_svitere, ребят, подскажите, пожалуйста, или ссылку дайте где есть пример работы со списком для отключения.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.01.2019, 09:17
Ответы с готовыми решениями:

Завершение сеансов удаленных пользователей
Всем добрый день и с Наступающим всех!!! Такой вопрос: Есть пользователи, которые логинятся на сервер(2008) с удаленных раб мест....

База учетных записей пользователей
Здравствуйте! Я новичок в программировании на С++, но возникла необходимость написать программу со следующим минимальным набором...

База учетных записей пользователей - C++ Builder
Запускаю программу, а тут такая ошибка, где взять такой файл, в интернете не могу найти MultiUsers.cpp(51): F1013 Error writing output...

59
Эксперт 1С
 Аватар для Phil
434 / 305 / 92
Регистрация: 28.05.2014
Сообщений: 1,246
08.02.2019, 10:27  [ТС]
Студворк — интернет-сервис помощи студентам
KDE777, добрый день, а как избавиться от этого start joB? сервер отказывается исполнять...
0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
08.02.2019, 10:38
Цитата Сообщение от Phil Посмотреть сообщение
сервер отказывается исполнять...
А почему - настроение у сервера плохое? Или напишите более конкретно, например показав сообщение об ошибке?

Цитата Сообщение от Phil Посмотреть сообщение
а как избавиться от этого start joB
А зачем вы вообще используете Start-Job? Из-за запуска scriptblock под другим пользователем (-credential)? И ради этого храните открытый пароль в скрипте?

Может сразу запускать PS от имени нужного пользователя и там просто выполнять код из scriptblock'а?
0
Эксперт 1С
 Аватар для Phil
434 / 305 / 92
Регистрация: 28.05.2014
Сообщений: 1,246
08.02.2019, 10:41  [ТС]
Цитата Сообщение от KDE777 Посмотреть сообщение
А зачем вы вообще используете Start-Job? Из-за запуска scriptblock под другим пользователем (-credential)? И ради этого храните открытый пароль в скрипте?
да, по другому не знаю как запустить из под другого пользователя под админом.

Цитата Сообщение от KDE777 Посмотреть сообщение
Может сразу запускать PS от имени нужного пользователя и там просто выполнять код из scriptblock'а?
в том то и дело, что нельзя.
Есть пользователь, он не админ, из под него надо запускать этот скрипт. Под админом нельзя заходить.
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
08.02.2019, 11:00
KDE777,
А зачем вы вообще используете Start-Job? Из-за запуска scriptblock под другим пользователем (-credential)? И ради этого храните открытый пароль в скрипте?
Можно хранить зашифрованный пароль, чтобы он не был доступен в явном виде.
0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
08.02.2019, 11:02
Цитата Сообщение от Phil Посмотреть сообщение
в том то и дело, что нельзя.
Есть пользователь, он не админ, из под него надо запускать этот скрипт. Под админом нельзя заходить.
Не надо заходить под админом. Надо запустить powershell от имени другого пользователя (админа) и уже там выполнить скрипт.

0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
08.02.2019, 11:08
KDE777,
Не надо заходить под админом. Надо запустить powershell от имени другого пользователя (админа) и уже там выполнить скрипт.
Я вижу, при таком подходе несколько нюансов. Если например нужны будут переменные окружения, конкретного пользователя, то возникнет загвоздка.

Как по мне, повышать права нужно только там, где это требуется, засим использование scriptblock-а с повышением, самое оно - то что нужно.

А пароль, как я писал выше можно и не хранить в открытом виде, никто ведь не запрещает его шифровать.
0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
08.02.2019, 11:10
Цитата Сообщение от v_svitere Посмотреть сообщение
Можно хранить зашифрованный пароль, чтобы он не был доступен в явном виде.
Ага можно - Запуск программы от другого пользователя Powershell

Но у Export-CliXml есть существенное ограничение, а способ:

PowerShell
1
2
$cred = Get-Credential -UserName $user -Message 'Введите пароль:'
ConvertFrom-SecureString -SecureString $cred.Password -Key (1..16) | Set-Content .\cred.txt
пароль конечно спрячет, но позволит использовать сохранёнными credential для чего угодно...
0
Эксперт 1С
 Аватар для Phil
434 / 305 / 92
Регистрация: 28.05.2014
Сообщений: 1,246
08.02.2019, 11:13  [ТС]
KDE777, но ведь тогда спросит пароль администратора
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
08.02.2019, 11:15
KDE777,
Ага можно
Это не единственный способ. Есть еще System.Security.Cryptography

пароль конечно спрячет, но позволит использовать сохранёнными credential для чего угодно...
Это конечно резонное замечание, но если посидеть то можно сделать так, чтобы это обойти. На ум приходит использование Runspace
0
Эксперт 1С
 Аватар для Phil
434 / 305 / 92
Регистрация: 28.05.2014
Сообщений: 1,246
08.02.2019, 11:29  [ТС]
v_svitere, ок, тогда как это переписать правильно?
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$secpasswd = ConvertTo-SecureString "11" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("Администратор", $secpasswd)
$job = Start-Job -scriptblock {
$TS=111.111.11.1
foreach ($user in Get-Content C:\Users.txt -Encoding UTF8)
{
    Disable-LocalUser -Name $user
    foreach ($session in qwinsta /server $TS | ? {$_ -match 'rdp-tcp#'})
{
    $RDP_user = $session -split ' +'
    if ($user -contains $RDP_user[2])
    {
    logoff $RDP_user[3] /server }
}
}
}-credential $mycreds
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
08.02.2019, 11:29
KDE777,

Не по теме:


А вообще эмпирически выявлено, что даже большинство Администраторов используют Powershell, для исполнения утилиты Ping, а автоматизацию сводят к написанию батников на CMD, то какое уж тут использование объектов Credential

0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
08.02.2019, 11:36
Цитата Сообщение от Phil Посмотреть сообщение
но ведь тогда спросит пароль администратора
Да спросит, но у вас всё равно этот пароль в открытом виде записан.
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
08.02.2019, 11:45
Phil, Надо сначала понимать, что именно у вас не работает, и что вы хотите.


Не по теме:

Ваша задача творческая и интересная, и лично я бы ее решал по-другому.
Я вообще не люблю использование дополнительных утилит, в вашем случае qwinsta, я бы не стал использовать, а попробовал, бы реализовать получение сессий WINAPI-методами. Но само собой тут необходимы углубленные знания.

0
Эксперт 1С
 Аватар для Phil
434 / 305 / 92
Регистрация: 28.05.2014
Сообщений: 1,246
08.02.2019, 11:50  [ТС]
KDE777, Та смысл в том что на раб столе пользователя с правами "пользователи удаленного рабочего стола" будет батник, который будет запускать скрипт powershell, никто не будет лазить в cmd смотреть что там откуда запускается.

Пароль от этого пользователя будет знать несколько человек, в зависимости от того кто в офисе, кто-то будет заходить и запускать батник отлючению пользователей.

Скажем так это аккаунт экстренного завершения работы группы пользователей, работающих на общем сервере
0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
08.02.2019, 11:57
Цитата Сообщение от v_svitere Посмотреть сообщение
Я вижу, при таком подходе несколько нюансов. Если например нужны будут переменные окружения, конкретного пользователя, то возникнет загвоздка.
Как по мне, повышать права нужно только там, где это требуется, засим использование scriptblock-а с повышением, самое оно - то что нужно.
Ни разу не сталкивался с задачей, что-бы именно пользователю выдавать скрипт, часть которого требует прав администратора терминального сервера. По мне, это просто недопустимо. А у администратора сервера никаких проблем с доступами и так нет.

Лично в моей практике - для все текущих задач по администрированию просто запускается powershell от УЗ, который делегированы все необходимые полномочия. А все скрипты в планировщике работают от имени сервисных УЗ, которым делегировано только то, что необходимо для работы этого скрипта.
0
Эксперт 1С
 Аватар для Phil
434 / 305 / 92
Регистрация: 28.05.2014
Сообщений: 1,246
08.02.2019, 11:57  [ТС]
v_svitere, выбрал qwinsta потому как не нашёл другого простого способа отключению группы пользователей по ID сеанса на сервере.
0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
08.02.2019, 12:08
Цитата Сообщение от Phil Посмотреть сообщение
Скажем так это аккаунт экстренного завершения работы группы пользователей, работающих на общем сервере
Т.е. в любом случае, вы нескольким сотрудникам предоставили права локального администратора от всего терминального сервера.

Добавлено через 7 минут
Я, как минимум, добавил бы этот скрипт в планировщик (с запуском от УЗ со всеми нужными правами), а нужной группе попробовал бы делегировать права на ручной запуск этой задачи:

https://superuser.com/question... -windows-7
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
08.02.2019, 12:08
KDE777,
Не буду с вами спорить.
Вполне возможно, просто нечетко сформировано ТЗ, а для реализации можно выбрать более подходящие инструменты.
Но я данную тему рассматривал в теоретическом разрезе. Спросили о возможности, ну что ж, такая возможность есть.

Лично в моей практике - для все текущих задач по администрированию просто запускается powershell от УЗ, который делегированы все необходимые полномочия. А все скрипты в планировщике работают от имени сервисных УЗ, которым делегировано только то, что необходимо для работы этого скрипта.
Здорово что у вас все четко реализовано и разграничено, но так бывает далеко не всегда, и далеко не во всех организациях.
0
Эксперт 1С
 Аватар для Phil
434 / 305 / 92
Регистрация: 28.05.2014
Сообщений: 1,246
08.02.2019, 12:11  [ТС]
KDE777, да никто из них в душе не знает что такое bat или ps1 файл, как они работают, а уже тем более что внутри исполняемых файлов есть код, это руководители разных звеньев, Которые хотят контролировать самостоятельно доступ их группы пользователей к удаленной работе на сервере. Т.к. сервер не их, прямым текстом им никто пароль от админа дать не может.
Вообще была идея засунуть этот bat в автозагрузку, а тогда как только пользователь авторизовался то всех сразу выбило и заблокировало.
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
08.02.2019, 12:18
KDE777,
Т.е. в любом случае, вы нескольким сотрудникам предоставили права локального администратора от всего терминального сервера.
С этой стороны то вы конечно, правы. Но тот у кого хватит знаний, может повысить права и от гостя до системы, Greg не даст соврать.

Я, как минимум, добавил бы этот скрипт в планировщик
Но мы ведь с вами не знаем, когда именно нужно запускать скрипт, может он привязан к каким-либо событиям в 1С?

Поэтому я редко, что-то делаю без нормального ТЗ.

Добавлено через 1 минуту
Phil,
Вообще была идея засунуть этот bat в автозагрузку, а тогда как только пользователь авторизовался то всех сразу выбило и заблокировало.
Здесь можно использовать планировщик с триггером входа
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.02.2019, 12:18

Создать несколько учетных записей пользователей
Прошу помочь написать bat скрипт: зарегистрировать несколько пользователей за одно обращение к компьютеру

Контроль учетных записей пользователей не позволяет ничего делать
Привет всем. У меня стоит windows 8 и не знаю почему, тут стоит ограничение, которое не позволяет ничего делать. Допустим хочу установить...

МТС модем, контроль учётных записей пользователей в windows 8 и паранойя
При установке модема МТС появляется предупреждение контроля учётных записей пользователей: "Вы хотите разрешить следующей программе...

Завершение сеансов всех пользователей и их программ в определенное время
Добрый день, коллеги, такой вопрос - если можно Как в windows server 2012R2 создать задание по закрытию всех пользователей и их программ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru