Как импортировать число из запроса сеанса в PowerShell / CMD - PullRequest
1 голос
/ 27 марта 2020

Я пытаюсь создать сценарий PowerShell, который позволяет мне запрашивать сеанс пользователя и скрывать указанный сеанс в RDP. Я хочу получить активную сессию с qwinsta, однако я могу получить результат только при вводе учетных данных для моего домена. Вот пример того, что я имею в виду в PowerShell:

runas /user:DOMAIN\USER "cmd /k qwinsta /server:192.168.255.2"

выведет

SESSIONNAME USERNAME ID STATE

services 0 Disc

console jdoe 2 Active

rdp-tcp 65536 Listen

Это вызовет команду cmd и позволит мне увидеть результат запроса. Тем не менее, я не хочу делать это каждый раз, когда мне нужно удаленно, потому что это утомительно. Я очень новичок в PowerShell, поэтому, пожалуйста, прости мое невежество, но как я могу получить идентификационный номер jdoe (в данном случае, номер 2), импортировать его в Powershell в форме переменной / строки, например, $activeSession =, затем запустите скрипт так:

Mstsc /shadow:$activeSession /v:192.168.255.2 /control /NoConsentPrompt /prompt

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 27 марта 2020

Если вы хотите ID из Active сеансов, вы можете сделать следующее:

runas /user:DOMAIN\USER "cmd /a /c qwinsta /server:192.168.255.2 > c:\temp\sessions.txt"
$activeSession = (Get-Content c:\temp\sessions.txt) -match '\b\d+\s+Active\b' -replace '\D'

Команда cmd qwinsta выведет в файл sessions.txt. Затем вы можете использовать Get-Content для чтения файла и анализа нужных вам данных.

-match и -replace являются операторами сравнения , которые используют регулярные выражения для сопоставления строк. \b является границей слова. \d+ - это одна или несколько цифр. \D - это любой не-ди git. Поскольку -replace не имеет строки замены, удаляются все совпадающие символы.


Более мощное решение PowerShell может использовать Invoke-Command :

$sessions = Invoke-Command -Scriptblock {qwinsta} -Credential Domain\User -ComputerName 192.168.255.2
$activeSession = $sessions -match '\b\d+\s+Active\b' -replace '\D'

This потребуется PSRemoting для настройки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...