Powershell Log Off Remote Session

Обычно считается, что плохая практика расширяет HashMap. Вместо этого вы должны создать класс с картой и дополнительным полем.

Это решит вашу проблему, но также будет иметь дополнительные преимущества:

  • вы будете (например, предотвращение добавления некоторых ключей / значений и т. д.)
  • вы сможете изменить реализацию карты, если это необходимо (LinkedHashMap, синхронизированная карта, параллельная карта)
29
задан Adi Inbar 17 September 2013 в 00:54
поделиться

11 ответов

Возможно, на удивление вы можете выйти из системы с помощью команды logoff.

C:\> logoff /?
Terminates a session.

LOGOFF [sessionname | sessionid] [/SERVER:servername] [/V] [/VM]

  sessionname         The name of the session.
  sessionid           The ID of the session.
  /SERVER:servername  Specifies the Remote Desktop server containing the user
                      session to log off (default is current).
  /V                  Displays information about the actions performed.
  /VM                 Logs off a session on server or within virtual machine.
                      The unique ID of the session needs to be specified.

Идентификатор сеанса можно определить с помощью команд qwinsta (query session) или quser (query user) (см. здесь ):

$server   = 'MyServer'
$username = $env:USERNAME

$session = ((quser /server:$server | ? { 

Возможно, на удивление вы можете выйти из системы с помощью команды logoff.

[110]

Идентификатор сеанса можно определить с помощью команд qwinsta (query session) или quser (query user) (см. здесь ):

[111] -match $username }) -split ' +')[2] logoff $session /server:$server
45
ответ дан Ansgar Wiechers 17 September 2013 в 00:54
поделиться

Попробуйте Модуль PowerShell для служб терминалов :

Get-TSSession -ComputerName comp1 -UserName user1 | Stop-TSSession -Force
4
ответ дан Shay Levy 17 September 2013 в 00:54
поделиться

Добавление простых команд DOS, если кто-то так склонен. Да, это все еще работает для Win 8 и Server 2008 + Server 2012.

Query session /server:Server100

Вернет:

SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
rdp-tcp#0         Bob                       3  Active  rdpwd
rdp-tcp#5         Jim                       9  Active  rdpwd
rdp-tcp                                 65536  Listen

И чтобы выйти из сеанса, используйте:

Reset session 3 /server:Server100
11
ответ дан user4317867 17 September 2013 в 00:54
поделиться

Вы можете использовать Invoke-RDUserLogoff

Пример выхода из системы пользователей Active Directory определенной организационной единицы:

$users = Get-ADUser -filter * -SearchBase "ou=YOUR_OU_NAME,dc=contoso,dc=com"

Get-RDUserSession | where { $users.sAMAccountName -contains 

Вы можете использовать Invoke-RDUserLogoff

Пример выхода из системы пользователей Active Directory определенной организационной единицы:

[110]

В конце канала, если вы попытаетесь использовать только foreach (%), он выйдет из системы только для одного пользователя. Но используя эту комбинацию foreach и pipe:

| % {$ _ | команда}

будет работать как положено.

Пс. Беги как адм.

.UserName } | % {

Вы можете использовать Invoke-RDUserLogoff

Пример выхода из системы пользователей Active Directory определенной организационной единицы:

[110]

В конце канала, если вы попытаетесь использовать только foreach (%), он выйдет из системы только для одного пользователя. Но используя эту комбинацию foreach и pipe:

| % {$ _ | команда}

будет работать как положено.

Пс. Беги как адм.

| Invoke-RDUserLogoff -Force }

В конце канала, если вы попытаетесь использовать только foreach (%), он выйдет из системы только для одного пользователя. Но используя эту комбинацию foreach и pipe:

| % {$ _ | команда}

будет работать как положено.

Пс. Беги как адм.

4
ответ дан Gauss 17 September 2013 в 00:54
поделиться

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

$serverName = "Name of server here OR localhost"
$sessions = qwinsta /server $serverName| ?{ 

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

[110]

В первой строке этого скрипта укажите $ serverName соответствующее значение или localhost, если он работает локально. Я использую этот скрипт, чтобы выгнать пользователей, прежде чем автоматизированный процесс попытается переместить некоторые папки. Предотвращает ошибки "файл в использовании" для меня. Еще одно примечание: этот сценарий должен запускаться от имени администратора, в противном случае вы можете получить отказ в доступе при попытке выйти из системы. Надеюсь, это поможет!

-notmatch '^ SESSIONNAME' } | %{ $item = "" | Select "Active", "SessionName", "Username", "Id", "State", "Type", "Device" $item.Active =

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

[110]

В первой строке этого скрипта укажите $ serverName соответствующее значение или localhost, если он работает локально. Я использую этот скрипт, чтобы выгнать пользователей, прежде чем автоматизированный процесс попытается переместить некоторые папки. Предотвращает ошибки "файл в использовании" для меня. Еще одно примечание: этот сценарий должен запускаться от имени администратора, в противном случае вы можете получить отказ в доступе при попытке выйти из системы. Надеюсь, это поможет!

.Substring(0,1) -match '>' $item.SessionName =

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

[110]

В первой строке этого скрипта укажите $ serverName соответствующее значение или localhost, если он работает локально. Я использую этот скрипт, чтобы выгнать пользователей, прежде чем автоматизированный процесс попытается переместить некоторые папки. Предотвращает ошибки "файл в использовании" для меня. Еще одно примечание: этот сценарий должен запускаться от имени администратора, в противном случае вы можете получить отказ в доступе при попытке выйти из системы. Надеюсь, это поможет!

.Substring(1,18).Trim() $item.Username =

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

[110]

В первой строке этого скрипта укажите $ serverName соответствующее значение или localhost, если он работает локально. Я использую этот скрипт, чтобы выгнать пользователей, прежде чем автоматизированный процесс попытается переместить некоторые папки. Предотвращает ошибки "файл в использовании" для меня. Еще одно примечание: этот сценарий должен запускаться от имени администратора, в противном случае вы можете получить отказ в доступе при попытке выйти из системы. Надеюсь, это поможет!

.Substring(19,20).Trim() $item.Id =

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

[110]

В первой строке этого скрипта укажите $ serverName соответствующее значение или localhost, если он работает локально. Я использую этот скрипт, чтобы выгнать пользователей, прежде чем автоматизированный процесс попытается переместить некоторые папки. Предотвращает ошибки "файл в использовании" для меня. Еще одно примечание: этот сценарий должен запускаться от имени администратора, в противном случае вы можете получить отказ в доступе при попытке выйти из системы. Надеюсь, это поможет!

.Substring(39,9).Trim() $item.State =

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

[110]

В первой строке этого скрипта укажите $ serverName соответствующее значение или localhost, если он работает локально. Я использую этот скрипт, чтобы выгнать пользователей, прежде чем автоматизированный процесс попытается переместить некоторые папки. Предотвращает ошибки "файл в использовании" для меня. Еще одно примечание: этот сценарий должен запускаться от имени администратора, в противном случае вы можете получить отказ в доступе при попытке выйти из системы. Надеюсь, это поможет!

.Substring(48,8).Trim() $item.Type =

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

[110]

В первой строке этого скрипта укажите $ serverName соответствующее значение или localhost, если он работает локально. Я использую этот скрипт, чтобы выгнать пользователей, прежде чем автоматизированный процесс попытается переместить некоторые папки. Предотвращает ошибки "файл в использовании" для меня. Еще одно примечание: этот сценарий должен запускаться от имени администратора, в противном случае вы можете получить отказ в доступе при попытке выйти из системы. Надеюсь, это поможет!

.Substring(56,12).Trim() $item.Device =

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

[110]

В первой строке этого скрипта укажите $ serverName соответствующее значение или localhost, если он работает локально. Я использую этот скрипт, чтобы выгнать пользователей, прежде чем автоматизированный процесс попытается переместить некоторые папки. Предотвращает ошибки "файл в использовании" для меня. Еще одно примечание: этот сценарий должен запускаться от имени администратора, в противном случае вы можете получить отказ в доступе при попытке выйти из системы. Надеюсь, это поможет!

.Substring(68).Trim() $item } foreach ($session in $sessions){ if ($session.Username -ne "" -or $session.Username.Length -gt 1){ logoff /server $serverName $session.Id } }

В первой строке этого скрипта укажите $ serverName соответствующее значение или localhost, если он работает локально. Я использую этот скрипт, чтобы выгнать пользователей, прежде чем автоматизированный процесс попытается переместить некоторые папки. Предотвращает ошибки "файл в использовании" для меня. Еще одно примечание: этот сценарий должен запускаться от имени администратора, в противном случае вы можете получить отказ в доступе при попытке выйти из системы. Надеюсь, это поможет!

12
ответ дан Jason Slobotski 17 September 2013 в 00:54
поделиться

Я уверен, что мой код будет проще и работает быстрее.

    $logon_sessions = get-process -includeusername | Select-Object -Unique -Property UserName, si | ? { 

Я уверен, что мой код будет проще и работает быстрее.

[110] -match "server" -and

Я уверен, что мой код будет проще и работает быстрее.

[110] -notmatch "admin" } foreach ($id in $logon_sessions.si) { logoff $id }
0
ответ дан Дмитрий Полищук 17 September 2013 в 00:54
поделиться

Это oldschool и предшествующий PowerShell, но я использовал комбо qwinsta / rwinsta для YEARS для удаленного выхода из устаревших сеансов RDP. Он встроен как минимум в Windows XP и более поздние версии (возможно, раньше)

Определите идентификатор сеанса:

qwinsta /SERVER:<NAME>

Удалите рассматриваемый сеанс:

rwinsta <SESSION_ID> /SERVER:<NAME>
7
ответ дан Joshua McKinnon 17 September 2013 в 00:54
поделиться

Поскольку мы находимся в области PowerShell, очень полезно, если мы можем вернуть правильный объект PowerShell ...

Мне лично нравится этот метод разбора, для краткости:

((quser) -replace '^>', '') -replace '\s{2,}', ',' | ConvertFrom-Csv

Примечание: это не учитывает отключение («диск») пользователей, но работает хорошо, если вы просто хотите получить быстрый список пользователей и не заботитесь об остальной информации. Я просто хотел получить список, и мне было все равно, отключены ли они в настоящее время.

Если вам небезразличны остальные данные, они немного сложнее:

(((quser) -replace '^>', '') -replace '\s{2,}', ',').Trim() | ForEach-Object {
    if (

Поскольку мы находимся в области PowerShell, очень полезно, если мы можем вернуть правильный объект PowerShell ...

Мне лично нравится этот метод разбора, для краткости:

[110]

Примечание: это не учитывает отключение («диск») пользователей, но работает хорошо, если вы просто хотите получить быстрый список пользователей и не заботитесь об остальной информации. Я просто хотел получить список, и мне было все равно, отключены ли они в настоящее время.

Если вам небезразличны остальные данные, они немного сложнее:

[111]

Я сделаю еще один шаг и дам вам очень чистый объект на моем блог.

.Split(',').Count -eq 5) { Write-Output (

Поскольку мы находимся в области PowerShell, очень полезно, если мы можем вернуть правильный объект PowerShell ...

Мне лично нравится этот метод разбора, для краткости:

[110]

Примечание: это не учитывает отключение («диск») пользователей, но работает хорошо, если вы просто хотите получить быстрый список пользователей и не заботитесь об остальной информации. Я просто хотел получить список, и мне было все равно, отключены ли они в настоящее время.

Если вам небезразличны остальные данные, они немного сложнее:

[111]

Я сделаю еще один шаг и дам вам очень чистый объект на моем блог.

-replace '(^[^,]+)', '$1,') } else { Write-Output

Поскольку мы находимся в области PowerShell, очень полезно, если мы можем вернуть правильный объект PowerShell ...

Мне лично нравится этот метод разбора, для краткости:

[110]

Примечание: это не учитывает отключение («диск») пользователей, но работает хорошо, если вы просто хотите получить быстрый список пользователей и не заботитесь об остальной информации. Я просто хотел получить список, и мне было все равно, отключены ли они в настоящее время.

Если вам небезразличны остальные данные, они немного сложнее:

[111]

Я сделаю еще один шаг и дам вам очень чистый объект на моем блог.

} } | ConvertFrom-Csv

Я сделаю еще один шаг и дам вам очень чистый объект на моем блог.

0
ответ дан VertigoRay 17 September 2013 в 00:54
поделиться

Я изменил ответ Кейси , чтобы выходить только из отключенных сеансов, выполнив следующие действия:

   foreach($Server in $Servers) {
    try {
        query user /server:$Server 2>&1 | select -skip 1 | ? {(

Я изменил ответ Кейси , чтобы выходить только из отключенных сеансов, выполнив следующие действия:

[110] -split "\s+")[-5] -eq 'Disc'} | % {logoff (

Я изменил ответ Кейси , чтобы выходить только из отключенных сеансов, выполнив следующие действия:

[110] -split "\s+")[-6] /server:$Server /V} } catch {} }
3
ответ дан Community 17 September 2013 в 00:54
поделиться

Выйти из системы всех пользователей:

try {
   query user /server:$SERVER 2>&1 | select -skip 1 | foreach {
     logoff (

Выйти из системы всех пользователей:

[110]

Подробности:

  • try / catch используется, когда на сервере нет пользователей и query возвращает ошибку. тем не менее, вы можете удалить часть 2>&1 и удалить try / catch, если вы не против увидеть строку ошибки
  • select -skip 1 удаляет строку заголовка
  • внутренний foreach выходит из системы каждого пользователя
  • (

    Выйти из системы всех пользователей:

    [110]

    Подробности:

    • [111] / [112] используется, когда на сервере нет пользователей и [113] возвращает ошибку. тем не менее, вы можете удалить часть [114] и удалить [115] / [116], если вы не против увидеть строку ошибки
    • [117] удаляет строку заголовка
    • внутренний [118] выходит из системы каждого пользователя
    • [119] разбивает строку на массив только с текстовыми элементами этого массива, вам нужно сделать это, потому что вывод query будет иметь 8 или 9 элементов в зависимости от того, подключены пользователи или отключены от сеанса терминала
    -split "\s+")
    разбивает строку на массив только с текстовыми элементами этого массива, вам нужно сделать это, потому что вывод query будет иметь 8 или 9 элементов в зависимости от того, подключены пользователи или отключены от сеанса терминала
-split "\s+")[-6] /server:$SERVER } } catch {}

Подробности:

  • try / catch используется, когда на сервере нет пользователей и query возвращает ошибку. тем не менее, вы можете удалить часть 2>&1 и удалить try / catch, если вы не против увидеть строку ошибки
  • select -skip 1 удаляет строку заголовка
  • внутренний foreach выходит из системы каждого пользователя
  • (

    Выйти из системы всех пользователей:

    [110]

    Подробности:

    • [111] / [112] используется, когда на сервере нет пользователей и [113] возвращает ошибку. тем не менее, вы можете удалить часть [114] и удалить [115] / [116], если вы не против увидеть строку ошибки
    • [117] удаляет строку заголовка
    • внутренний [118] выходит из системы каждого пользователя
    • [119] разбивает строку на массив только с текстовыми элементами этого массива, вам нужно сделать это, потому что вывод query будет иметь 8 или 9 элементов в зависимости от того, подключены пользователи или отключены от сеанса терминала
    -split "\s+")
    разбивает строку на массив только с текстовыми элементами этого массива, вам нужно сделать это, потому что вывод query будет иметь 8 или 9 элементов в зависимости от того, подключены пользователи или отключены от сеанса терминала
2
ответ дан cmcginty 17 September 2013 в 00:54
поделиться

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

param (
    $queryResults = $null,
    [string]$UserName = $env:USERNAME,
    [string]$ServerName = "YourServerName"
)


if (Test-Connection $ServerName -Count 1 -Quiet) {  
    Write-Host "`n`n`n$ServerName is online!" -BackgroundColor Green -ForegroundColor Black


    Write-Host ("`nQuerying Server: `"$ServerName`" for disconnected sessions under UserName: `"" + $UserName.ToUpper() + "`"...") -BackgroundColor Gray -ForegroundColor Black

        query user $UserName /server:$ServerName 2>&1 | foreach {  

            if (

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

-match "Active") { Write-Host "Active Sessions" $queryResults = ("`n$ServerName," + ((

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

.trim() -replace ' {2,}', ','))) | ConvertFrom-Csv -Delimiter "," -Header "ServerName","UserName","SessionName","SessionID","CurrentState","IdealTime","LogonTime" $queryResults | ft Write-Host "Starting logoff procedure..." -BackgroundColor Gray -ForegroundColor Black $queryResults | foreach { $Sessionl =

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

.SessionID $Serverl =

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

.ServerName Write-Host "Logging off"

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

.username"from $serverl..." -ForegroundColor black -BackgroundColor Gray sleep 2 logoff $Sessionl /server:$Serverl /v } } elseif (

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

-match "Disc") { Write-Host "Disconnected Sessions" $queryResults = ("`n$ServerName," + ((

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

.trim() -replace ' {2,}', ','))) | ConvertFrom-Csv -Delimiter "," -Header "ServerName","UserName","SessionID","CurrentState","IdealTime","LogonTime" $queryResults | ft Write-Host "Starting logoff procedure..." -BackgroundColor Gray -ForegroundColor Black $queryResults | foreach { $Sessionl =

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

.SessionID $Serverl =

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

.ServerName Write-Host "Logging off"

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

.username"from $serverl..." sleep 2 logoff $Sessionl /server:$Serverl /v } } elseif (

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

-match "The RPC server is unavailable") { Write-Host "Unable to query the $ServerName, check for firewall settings on $ServerName!" -ForegroundColor White -BackgroundColor Red } elseif (

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

-match "No User exists for") {Write-Host "No user session exists"} } } else { Write-Host "`n`n`n$ServerName is Offline!" -BackgroundColor red -ForegroundColor white Write-Host "Error: Unable to connect to $ServerName!" -BackgroundColor red -ForegroundColor white Write-Host "Either the $ServerName is down or check for firewall settings on server $ServerName!" -BackgroundColor Yellow -ForegroundColor black } Read-Host "`n`nScript execution finished, press enter to exit!"

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

0
ответ дан LT- 17 September 2013 в 00:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: