Je recherche un moyen de fermer toutes les sessions actives du Bureau à distance sur un ordinateur (ordinateur local). Windows comprend quelques commandes (rwinsta, qwinsta, etc.) pour consulter les sessions actives, mais je ne vois pas comment je pourrais facilement utiliser les informations (sauf si j'analyse la chaîne ...) pour fermer toutes les sessions.
Existe-t-il un moyen dans Powershell (ou C #, Batch) de fermer toutes les sessions Bureau à distance sur un ordinateur local?
Merci, Martin
Réponses:
Vous pouvez essayer d'utiliser le
/sm
paramètre non documenté pourquery session
(dans un fichier de commandes) pour trier les choses plus facilement:la source
Oui, en utilisant tsdiscon à partir d'une ligne de commande:
où le n doit être remplacé par l'ID de session.
Vous pouvez obtenir le numéro de session auprès de
Puisque vous dites que vous souhaitez fermer toutes les sessions sur l'ordinateur local, je suppose que vous devrez faire attention à l'ordre dans lequel vous le faites (c'est-à-dire fermer votre session en dernier).
la source
Vous voudrez peut-être consulter les extensions de communauté Powershell. Il comprend les applets de commande Get, Stop et Disconnect TerminalSession.
la source
Vous pouvez utiliser l' utilitaire tsdiscon pour déconnecter les sessions. Si vous utilisez la commande «Sessions de requête» à partir d'une invite de commandes, vous pouvez voir la liste des ID, puis émettre une commande tsdiscon pour chacun.
Une construction en boucle comme celle-ci devrait fonctionner
où q.bat est
Cela déconnectera uniquement les sessions distantes et ignorera l'utilisateur de la console.
la source
Vous pouvez déconnecter des sessions locales ou distantes avec tsdiscon.
la source
J'ai trouvé que TSDISCON ne supprime pas les sessions connectées au "disque".
J'ai remplacé TSDISCON par une déconnexion.
la source
Vous pouvez utiliser le module PSTerminalServices PowerShell:
http://blogs.microsoft.co.il/blogs/scriptfanatic/archive/2010/02/22/psterminalservices-powershell-module-for-terminal-services.aspx
Get-TSSession -ComputerName server1 -State Active | Disconnect-TSSession -WhatIf
la source
Je sais que l'OP est assez vieux maintenant, mais cela devrait faire ce que vous recherchez (et au cas où quelqu'un d'autre chercherait toujours quelque chose à faire de même, je pensais que je répondrais de toute façon).
De même, vous pouvez utiliser à la
query/reset session
place deq/rwinsta
...la source
FOR /F %A IN (c:\scripts\ps\computers.txt) DO (FOR /f "tokens=2" %i IN ('qwinsta /SERVER:%A ^| find /i "disc"') **DO if "%i" NEQ "0" ECHO %i** | rwinsta %i /SERVER:%A /V)
la source
La commande TSDiscon déconnectera les sessions des services de terminal (RDP). Utilisé seul, il déconnectera la session en cours, vous pouvez spécifier l'ID de session de la session à laquelle vous souhaitez vous déconnecter, vous pouvez également fournir le nom du serveur pour vous déconnecter.
Tous les détails peuvent être trouvés ici .
la source
Vous n'avez pas spécifié si vous souhaitez le faire sans éteindre ou redémarrer l'ordinateur. Mais si cela ne vous dérange pas un redémarrage ou un arrêt, vous pouvez simplement appeler:
Cela forcera en fait un redémarrage de l'ordinateur.
la source
Même la question est très ancienne, il n'y a pratiquement pas de solutions à toutes les versions sans qwinsta / query / tsdiscon, à savoir toutes les versions Windows home.
Cependant, il existe une version PowerShell facile pour déconnecter une session:
Un identifiant de session peut être obtenu, par exemple avec
getProcesss
. Pour déconnecter (pas se déconnecter!) Une session, utilisez$tstType::DisconnectSession("localhost", 2)
.la source