Ecco una grande soluzione con script per registrare le persone in remoto o localmente. Sto usando qwinsta per ottenere informazioni sulla sessione e costruire un array con l'output specificato. Ciò semplifica facilmente l'iterazione di ogni voce e disconnette solo gli utenti effettivi, e non il listener del sistema o RDP stesso che di solito genera comunque un errore di accesso negato.
$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
}
}
Nella prima riga di questo script assegnare $ serverName al valore appropriato o localhost se in esecuzione localmente. Uso questo script per cacciare gli utenti prima che un processo automatico tenti di spostare alcune cartelle. Impedisce errori "file in uso" per me. Un'altra nota, questo script dovrà essere eseguito come utente amministratore, altrimenti è possibile negare l'accesso cercando di registrare qualcuno. Spero che questo ti aiuti!
fonte
2016-03-07 16:30:21
Penso che dovrebbe funzionare – EBGreen
Lo uso localmente in un server "simile a un kiosk" per un dipartimento IT (una lunga storia) e funziona. Mai provato a distanza, ma penso che possa funzionare, anche io. –
@ CB-I di recente mi sono imbattuto nello stesso problema in cui ho bisogno di disconnettere tutti gli utenti disconnessi. Così puoi dirmi come implementarlo e dove di recente ho fatto una stessa domanda qui http://stackoverflow.com/ domande/18377592/get-disconnected-users-and-logoff-them? – coder