Обычно считается, что плохая практика расширяет HashMap. Вместо этого вы должны создать класс с картой и дополнительным полем.
Это решит вашу проблему, но также будет иметь дополнительные преимущества:
Возможно, на удивление вы можете выйти из системы с помощью команды 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
Попробуйте Модуль PowerShell для служб терминалов :
Get-TSSession -ComputerName comp1 -UserName user1 | Stop-TSSession -Force
Добавление простых команд 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
Вы можете использовать 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:
| % {$ _ | команда}
будет работать как положено.
Пс. Беги как адм.
Вот отличное скриптовое решение для удаленного или локального выхода из системы. Я использую 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, если он работает локально. Я использую этот скрипт, чтобы выгнать пользователей, прежде чем автоматизированный процесс попытается переместить некоторые папки. Предотвращает ошибки "файл в использовании" для меня. Еще одно примечание: этот сценарий должен запускаться от имени администратора, в противном случае вы можете получить отказ в доступе при попытке выйти из системы. Надеюсь, это поможет!
Я уверен, что мой код будет проще и работает быстрее.
$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
}
Это oldschool и предшествующий PowerShell, но я использовал комбо qwinsta / rwinsta для YEARS для удаленного выхода из устаревших сеансов RDP. Он встроен как минимум в Windows XP и более поздние версии (возможно, раньше)
Определите идентификатор сеанса:
qwinsta /SERVER:<NAME>
Удалите рассматриваемый сеанс:
rwinsta <SESSION_ID> /SERVER:<NAME>
Поскольку мы находимся в области 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
Я сделаю еще один шаг и дам вам очень чистый объект на моем блог.
Я изменил ответ Кейси , чтобы выходить только из отключенных сеансов, выполнив следующие действия:
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 {}
}
Выйти из системы всех пользователей:
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 элементов в зависимости от того, подключены пользователи или отключены от сеанса терминала Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «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] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.
Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы
-match "Active") {
Write-Host "Active Sessions"
$queryResults = ("`n$ServerName," + (( Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.
[110] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов 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] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.
Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы
.SessionID
$Serverl = Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.
[110] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.
Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы
.ServerName
Write-Host "Logging off" Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.
[110] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.
Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы
.username"from $serverl..." -ForegroundColor black -BackgroundColor Gray
sleep 2
logoff $Sessionl /server:$Serverl /v
}
}
elseif ( Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.
[110] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.
Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы
-match "Disc") {
Write-Host "Disconnected Sessions"
$queryResults = ("`n$ServerName," + (( Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.
[110] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов 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] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.
Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы
.SessionID
$Serverl = Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.
[110] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.
Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы
.ServerName
Write-Host "Logging off" Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.
[110] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.
Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы
.username"from $serverl..."
sleep 2
logoff $Sessionl /server:$Serverl /v
}
}
elseif ( Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.
[110] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов 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] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов 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!"
Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.
Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы