Oto wielki skryptów rozwiązanie do zdalnego logowania lub lokalnie. Używam qwinsta do pobierania informacji o sesji i budowania tablicy z danych wyjściowych. Ułatwia to iterację każdego wpisu i wylogowanie tylko rzeczywistych użytkowników, a nie samego systemu lub samego detektora RDP, który zwykle po prostu zgłasza błąd odmowy dostępu.
$serverName = "Name of server here OR localhost"
$sessions = qwinsta /server $serverName| ?{ $_ -notmatch '^ SESSIONNAME' } | %{
$item = "" | Select "Active", "SessionName", "Username", "Id", "State", "Type", "Device"
$item.Active = $_.Substring(0,1) -match '>'
$item.SessionName = $_.Substring(1,18).Trim()
$item.Username = $_.Substring(19,20).Trim()
$item.Id = $_.Substring(39,9).Trim()
$item.State = $_.Substring(48,8).Trim()
$item.Type = $_.Substring(56,12).Trim()
$item.Device = $_.Substring(68).Trim()
$item
}
foreach ($session in $sessions){
if ($session.Username -ne "" -or $session.Username.Length -gt 1){
logoff /server $serverName $session.Id
}
}
W pierwszym wierszu skryptu należy podać $ serverName odpowiednią wartość lub localhost, jeśli działa lokalnie. Używam tego skryptu, aby wykopać użytkowników, zanim automatyczny proces spróbuje przenieść niektóre foldery. Zapobiega błędom "plik w użyciu". Inna uwaga: ten skrypt będzie musiał zostać uruchomiony jako administrator, w przeciwnym razie odmówiono dostępu do próby zalogowania się. Mam nadzieję że to pomoże!
Myślę, że to powinno zadziałać – EBGreen
Używam tego lokalnie na serwerze "kiosku" dla działu IT (długa historia) i działa. Nigdy nie testowałem zdalnie, ale myślę, że może działać, ja też. –
@ CB-Niedawno natknąłem się na ten sam problem, w którym muszę się wylogować wszystkich odłączonych użytkowników. Czy możesz mi powiedzieć, jak zaimplementować to i gdzie ostatnio zadałem to samo pytanie tutaj http://stackoverflow.com/ pytania/18377592/get-disconnected-users-and-logoff-them? – coder