derwowusste
Goto Top

Wenn nur eine oder zwei Dateien geöffnet, dann Sitzung beenden - net-session-Syntax gesucht

Moin Kollegen.

Ich rufe ein weiteres Mal die Batch-Skriptinggötter an:

Die Ausgabe von net session liefert mir in etwa
Computer               Benutzername         Clienttyp        Öffn. Ruhezeit

-----------------------------------------------------------------------------------------------------
\\ersteIP         User1                                                                     0    00:00:06
\\zweiteIP       User2                                                                    14    00:03:26
\\dritteIP         User3                                                                    16    00:04:55
...

Ich habe vor, die Trennung aller Sitzungen zu erzwingen, die 0, 1 oder zwei Dateien offen haben (keine Sorge, die Konsequenzen sind bedacht).

Ich weiß, wie ich den Wert der dritten Spalte ("Öffn") ausgeben lassen kann
for /f "tokens=3" %a in ('net session') do echo %a  
(Die Spalte "Clienttyp" ist immer leer)

Leider fehlt mir noch die Idee, wie ich daraus nun die richtige Sitzung mittels
net session /delete
schließen kann.

Hat jemand einen Ansatz für mich?

Content-Key: 267267

Url: https://administrator.de/contentid/267267

Printed on: April 19, 2024 at 19:04 o'clock

Member: emeriks
emeriks Mar 24, 2015 at 14:41:36 (UTC)
Goto Top
Hi,
nicht viel. Aber mit "query user" bekommst Du eine Auflistung der Benutzer uhnd Sitzungen.

E.
Member: sk-it83
sk-it83 Mar 24, 2015 at 14:46:33 (UTC)
Goto Top
Moin,

vielleicht hilft dir auch qwinsta weiter?

VG
Member: colinardo
colinardo Mar 24, 2015 at 14:47:23 (UTC)
Goto Top
Member: emeriks
emeriks Mar 24, 2015 at 14:52:26 (UTC)
Goto Top
Member: colinardo
colinardo Mar 24, 2015 at 14:54:01 (UTC)
Goto Top
Zitat von @emeriks:
Man eh, hast Du Langeweile? face-wink
neee face-big-smile im Moment ist hier die Hölle los ...ist aber auch schon ein Weilchen her das Script..
Member: DerWoWusste
DerWoWusste Mar 24, 2015 at 14:56:00 (UTC)
Goto Top
Hi Ihr 3.

query user oder qwinsta? Ich sehe den Zusammenhang zur Frage leider gar nicht. Es geht mir ja um Freigabebenutzungen, die getrennt werden sollen, nicht um Usersitzungen.
Uwe, Deine Künste in Ehren, aber ich bin mit Powershell nicht firm genug, um daraus jetzt Skripte zu extrahieren, die mir weiterhelfen.
Member: colinardo
colinardo Mar 24, 2015 updated at 15:40:47 (UTC)
Goto Top
Probiers mal hiermit, ungetestet...
@echo off & setlocal
for /f "tokens=1,3" %%a in ('net session ^| findstr /B "\\"') DO @(  
   if %%b LEQ 2 net session %%a /delete /y
)
Grüße Uwe

edit etwas angepasst
Member: DerWoWusste
DerWoWusste Mar 24, 2015 at 15:38:40 (UTC)
Goto Top
Ah ja!

Warum auch immer, das LEQ tut nicht das, was es soll - das Skript will alle Verbindungen löschen.
Wenn ich jedoch
for /f "tokens=1,3" %%a in ('net session ^| findstr /B "\\"') DO @(if "%%b" EQU "0" net session %%a /delete /y)  
for /f "tokens=1,3" %%a in ('net session ^| findstr /B "\\"') DO @(if "%%b" EQU "1" net session %%a /delete /y)  
for /f "tokens=1,3" %%a in ('net session ^| findstr /B "\\"') DO @(if "%%b" EQU "2" net session %%a /delete /y)  
nutze, dann tut es, was es soll.
Member: colinardo
colinardo Mar 24, 2015 at 15:40:39 (UTC)
Goto Top
Hatte es noch korrigiert, die Anführungszeichen dürfen für den Vergleich nicht sein, sonst wird ein String-Vergleich gemacht.
Member: colinardo
Solution colinardo Mar 24, 2015 updated at 15:54:47 (UTC)
Goto Top
und hier als Nachtrag noch die Powershell Variante:
net session | ?{$_ -match '^(\\\\[^\s]+).*\b(0|1|2)\b'} | %{net session $matches[1] /delete /y}
Member: DerWoWusste
DerWoWusste Mar 24, 2015 at 15:46:24 (UTC)
Goto Top
Sauber.

Ich hoffe, ich kann auch Dich mal beraten - IT-Security-Rat habe ich besonders günstig im Angebot!
Danke!
Member: colinardo
colinardo Mar 24, 2015 updated at 15:47:51 (UTC)
Goto Top
Zitat von @DerWoWusste:
Ich hoffe, ich kann auch Dich mal beraten - IT-Security-Rat habe ich besonders günstig im Angebot!
Da komm ich sicher in der Zukunft mal drauf zurück face-smile

Keine Ursache
Grüße Uwe