Znajdź użytkowników podłączonych do udziału sieciowego

18

Na moim serwerze z systemem Windows 2008 mam udział sieciowy. Jestem zalogowany na serwerze z pełnymi prawami administratora. Chciałbym wiedzieć, którzy użytkownicy mają aktywne połączenia z tym udziałem.

Jak znaleźć te informacje?

Mark Arnott
źródło

Odpowiedzi:

24

Są na to dwa sposoby, które wiem, jeśli. Jeden jest niewiarygodny, ale prawdopodobnie wystarczający dla większości scenariuszy. Jeden jest obszerny, ale trudny do wdrożenia w dowolnej skali, która przekracza garść połączeń użytkowników.

Kinda-Sorta Way: Wybierz Narzędzia systemowe >> Foldery współdzielone >> Otwórz pliki, aby zobaczyć, jakie pliki są otwarte na serwerze plików. Stamtąd możesz skorelować konta użytkowników, które mają otwarte pliki, z udziałami, z którymi są połączone.

Może to jednak być niewystarczające. Nie wierzysz mi? Przejdź do Zarządzania komputerem i wybierz Narzędzia systemowe >> Foldery współdzielone >> Sesje, aby zobaczyć, kto jest połączony. Następnie spójrz na # open fileskolumnę. Niektóre sesje powinny mieć 0 otwartych plików. Skąd wiesz, z jakim udziałem są technicznie związane? Cieszę się, że zapytałeś ...

Rozbudowany, ale trudny do skalowania sposób: wykonaj net share [sharename]każdy udział, o którym mowa, aby uzyskać listę podłączonych do niego użytkowników. W moich testach wymieniono nawet użytkowników, którzy nie mają otwartych plików.

Możesz także użyć narzędzia administracyjnego Menedżer udziałów i magazynów w Server 2008 i późniejszych zamiast Zarządzania komputerem. Znajdź udział na liście udziałów, a następnie w okienku akcji kliknij prawym przyciskiem myszy „Zarządzaj sesjami”. Zobaczysz listę sesji, w tym te, które mają zero otwartych plików.

Ale ... ale ... Chcę znaleźć konkretnego użytkownika bez sprawdzania każdego udziału! Jeśli masz określonego użytkownika, którego chcesz wyśledzić, wydaje się, że jedynym sposobem na znalezienie tej informacji jest zapytanie każdego udziału i sprawdzenie go, aby znaleźć odpowiedniego użytkownika. I przez gałkę oczną mam na myśli wyjście rurowe do findstrlub select-string. Można ekstrapolować przepływ pracy na skrypt, który wylicza wszystkie dostępne udziały, zapytania dla podłączonych użytkowników i przeszukuje dane wyjściowe dla danego użytkownika, ale wydaje się, że jest to ćwiczenie dla czytelnika, a nie coś, co Microsoft zawarł jako funkcję natywną .

Wesley
źródło
Podane informacje nie są wystarczające w sesjach lub udostępnianiu. Nie pokazuje konkretnie, którzy użytkownicy są połączeni z jakim udziałem. Często widzę wiele połączeń z udziałem sieciowym, ale jeśli użytkownik nie ma otwartego pliku, nie mogę powiedzieć, kto jest połączony. Mogę tylko powiedzieć, że istnieje pewna liczba otwartych połączeń. Nie, kto ma otwarte połączenie. Więc Rick jest po prostu poprawny w tym przypadku.
Widzę konkretną sytuację, która może istnieć, gdy użytkownik ma otwartą sesję, ale nie ma otwartego pliku, dlatego nie jesteś pewien, na jaki konkretny udział ma otwarta upiorna sesja. W tym scenariuszu nie wiem, jak powiązać sesje 0-plików z udziałem, z którym są połączone.
Wesley
Lub z wiersza polecenia: NET SHARE <NAZWA UHARENY>
Simon Catlin
@ SimonCatlin Właśnie przetestowałem to na maszynie Server 2008. Miałem jednego użytkownika bez otwartych plików, ale byłem wymieniony jako otwarta sesja. Musiałem wysłać zapytanie do każdego udziału na serwerze, net share sharenameale w końcu znalazłem udział, z którym sesja była połączona. Nie wiem, czy można odwrócić zapytanie i rozpocząć od interesującego użytkownika, a następnie śledzić go do udziału, z którym ma połączenie. Może potrzebować niestandardowego PowerShelling.
Wesley
4

To bardzo stare pytanie, ale zaakceptowana odpowiedź pominęła jeden z najlepszych sposobów na znalezienie informacji. GUI może pokazywać, że istnieją „połączeni klienci”, ale nie pokazuje tych połączeń w „otwartych plikach”. W takim przypadku wymaga użycia WMI do ustalenia, kto jest podłączony do udziału.

Oto polecenie powershell, aby zobaczyć, kto jest podłączony do określonego udziału i przykładowe dane wyjściowe:

Get-WmiObject Win32_ServerConnection -ComputerName SERVER01 | Select-Object ShareName,UserName,ComputerName | Where-Object {$_.ShareName -eq "SHARENAME"}

Przykładowe dane wyjściowe:

ShareName        UserName        ComputerName
---------        --------        ------------
SHARENAME        user1           10.0.0.20
SHARENAME        user2           10.0.0.30
SHARENAME        user3           10.0.0.40
Brady Witbeck
źródło
Mad kudos Miałem dwa udziały o różnych nazwach na tej samej ścieżce lokalnej i to była jedyna rzecz, która pozwoliła mi zawęzić użytkowników i komputery za pomocą jednego z dwóch udziałów, których chciałem się pozbyć :)
Gregg
0

Menedżer komputera nie jest dostępny w taki sam sposób, jak w poprzednich wersjach. Pojawia się „Menedżer serwera” po kliknięciu prawym przyciskiem myszy Komputer i wybraniu „zarządzaj”. Zamiast tego po prostu wpisz compmgmt.msc w polu „Wyszukaj programy i pliki” podczas uruchamiania.

Gość
źródło
-3

Nie sądzę, aby udzielone odpowiedzi faktycznie odpowiadały na pytanie. Jeśli używasz systemu Windows Server 2008 (NIE R2) i klikniesz prawym przyciskiem myszy Komputer i wybierz Zarządzaj, a następnie potwierdzisz komunikat UAC, uruchamia się MMC Server Manager. W Menedżerze serwera znajdują się następujące elementy: Role, Funkcje, Diagnostyka, Konfiguracja i Pamięć. Wydaje się, że żaden z tych pięciu elementów nie ma dostępnych opcji udostępniania nazw jako opcji, co było pierwotnym pytaniem. Dodatek EDIT do odpowiedzi był bardziej przydatny, wspominając o menedżerze udziałów i magazynu, ale nadal nie wydaje się, aby udzielał odpowiedzi. Zawiera wyczerpującą listę nazw udziałów i właściwości, ale aktywne połączenia również się tutaj nie wyświetlają. W systemie Windows Server 2003 istniało narzędzie systemu operacyjnego, które wyświetlało serwery, udziały i połączenia, ale jeszcze go nie znalazłem na WS2008. Było narzędzie innej firmy, którego używałem, o nazwie Hiena z Adkins Resource, które, jak sądzę, wciąż jest sprzedawane, co doskonale spisało się, wyświetlając wszelkiego rodzaju informacje na temat praktycznie każdego aspektu stanu serwera.

Rick Ferris
źródło
2
Po prostu się mylisz. Właśnie odpaliłem maszynę wirtualną R2 z 2008 roku. Gdy otworzysz Zarządzanie komputerem (compmgmt.msc)i wszystko, co opisuje Wesley, jest dokładnie tak samo jak w 2003 roku, w tym otwarte pliki i aktywne sesje. Zobacz ten zrzut ekranu, jeśli mi nie wierzysz.
MDMarra
@Rick Masz rację, moja odpowiedź nie była całkowicie poprawna. Dwa lata później, pod wpływem zachęty innego członka, który mnie wezwał, powtórzyłem moją odpowiedź, aby była poprawna. Dzięki, że mnie wyostrzyłeś. =)
Wesley