NET SEND i MSG, czyli okienko z wiadomością dla użytkownika

Świat bitów i bajtów daje całe spektrum możliwości kontaktu w sieci komputerowej. Okienko z komunikatem zdecydowanie nie należy do nowoczesnych metod i raczej nie będzie dobrym sposobem na prowadzenie dialogu, ale w niektórych sytuacjach na pewno okaże się idealną metodą do przekazania wiadomości użytkownikom. Proste rozwiązania bywają nie raz najlepsze 🙂

W Windowsach sprzed Visty komunikaty z treścią wysyłaliśmy poleceniem NET SEND. W nowszych wersjach, czyli od Visty w górę, mamy programik o nazwie MSG, a NET SENT już nie występuje.

NET SEND

NET SENT opiera się na usłudze Messenger. Zablokowanie go, oznacza zablokowanie komunikatów, a przyda się zwłaszcza tam, gdzie użytkownicy traktują to jako metodę na zrobienie komuś żartu.

Jeśli chcemy na zdalnym komputerze uruchomić usługę Messenger, możemy użyć na przykład opisywanego przeze mnie psexec’a:

psexec.exe \\nazwa_komputera net start messenger

Oto, jak można wysłać prosty komunikat, dla wybranego użytkownika w domenie (jeśli użytkownik jest zalogowany w kilku miejscach na raz, to komunikat pojawi się tylko na jednej maszynie):

net send “Prosimy o pilny kontakt z Helpdeskiem pod nr 666. Helpdesk. ”

Aby wysłać komunikat dla wszystkich użytkowników na danej maszynie, czyli na przykład na Terminal Serwerze, na którym wykonujemy to polecenie należy użyć polecenia:

net send /users “Uwaga, ten serwer zostanie za chwile zrestartowany. Pozdrawiamy, Dzial IT.”

Możemy też wysłać komunikat na dany komputer nie wiedząc kto akurat jest tam zalogowany:

net send \\nazwa_komputera „Drogi uzytkowniku, zadzwon pod 667 w sprawie instalacji Office. Pozdrawiam Romek, dzial IT.”

Aby wysłać komunikat wszystkim użytkownikom w domenie:

net send /domain:nazwa_Twojej_domeny „Przypominamy o corocznym spotkaniu pracowników, ktore odbedzie sie za 5 minut w Sali 123.”

Możliwości NET SEND w tym miejscu wyczerpują się. W systemach Vista/7/8/Srv2008 i Windows Srv 2012 mamy znacznie więcej możliwości.

MSG

Do działania MSG, w kluczu HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server wartość AllowRemoteRPC musi wynosić 1

Prosta wiadomość dla danego loginu wygląda podobnie jak w NET SEND. Warto jednak zaznaczyć, że tym razem komunikat trafi na wszystkie sesje, a nie tylko jedną:

msg login_użytkownika Tu Krzysiek. Zatrzasnąłem się w serwerowni. Pomożesz?

Aby wysłać komunikat na dany komputer użyjemy:

msg * /server:nazwa_serwera Proszę na chwilę wyjść z aplikacji ABC.

Oczywiście, można dokładnie sprecyzować jednocześnie login i nazwę komputera:

msg nazwa_użytkownika /server:nazwa_serwera /time:300 Świetnie dziś wyglądasz…

Możemy wysłać też komunikat na dany numer sesji

msg 2 Zadzwoń do Darka jak skończysz.

Aby wysłać komunikat na wszystkie loginy z listy użyjemy:

msg @twoja_Lista.txt Proszę się natychmiast wylogować. Trwa restart serwerów.

Aby wysłać wiadomość z pliku (tresc.txt) do wszystkich sesji użytkownika piotr12:

msg piotr12 <tresc.txt

Aby wysłać wiadomość do wszystkich użytkowników na maszynie z której wysyłamy komunikat:

msg * Uwaga, wyłączenie prądu wystąpi zgodnie z planem za 15 minut!

Można też ustawić czas po jakim komunikat zniknie (w sekundach). Na przykład:

msg * /TIME:120 Idziemy na kawę?

Mam nadzieję, że ten artykuł posłuży dobrym celom i nikt nie oskarży mnie o podrzucanie głupich pomysłów na biurowe żarty:) Tak czy siak, swoimi doświadczeniami z wysyłaniem komunikatów możecie podzielić się w komentarzach.

Łukasz Skalikow

Obecnie Manager IT. Przez lata byłem Inżynierem systemów. Jestem entuzjastą i specem od vSphere, Windows serwer, GPO. Od zawsze byłem zwolennikiem wiersza poleceń i automatyzacji. Obecnie, ze względu na pracę, rodzinę i wyjazdy służbowe, dużo mniej udzielam się na blogu, ale mam nadzieję, że pośród kilkuset porad opublikowanych na spece.it, wiele osób znajdzie dla siebie coś przydatnego :)

Przeczytaj także...

40 komentarzy

  1. Polish translators napisał(a):

    A co powiecie na automatyczną wiadomość out-of-office w Outlooku „Twój komputer ma problem z dostarczeniem wiadomości. Aby przywrócić funkcję wysyłania wiadomości uruchom ponownie komputer i wyślij wiadomość.” Zabawne, ile ja wiadomości dostawałam następnego dnia. 🙂

  2. Łukasz Skalikow napisał(a):

    Nie wpadłbym na tak okrutny żart, ale wierzę, że działa 🙂 Za ten numer daję 5 pkt.

  3. gajowy napisał(a):

    „…opiera się na serwisie Messenger”
    W polskiej wersji językowej chyba na usłudze. Niby drobiazg, ale precyzja na takim blogu byłaby wskazana.

    • Łukasz Skalikow napisał(a):

      Hej, dziękuję za komentarz. „serwis” jest bezpośrednim tłumaczeniem „service”, a także synonimem słowa „usługa”. Słowo „serwis” znajdziemy w wielu „profesjonalnych” instrukcjach i nawet na szkoleniach Microsoftu osoby prowadzące używają serwis/usługa na przemian 🙂

  4. m4ko napisał(a):

    Kiedy próbuje wysłać wiadomość w sieci z domeną do komputera poleceniem
    C:\msg /server:domena\nazwa_komputera nazwa_użytkownika test
    wywala mi błąd następującej treści:
    Wystąpił błąd 1722 podczas uzyskiwania nazw sesji
    Dodam, że na komputerze do którego chce wysłać msg ustawiony jest dostęp RDP w rejestrze.
    Proszę o pomysły.

    • Łukasz Skalikow napisał(a):

      Jaką masz wersję systemu?

      Wspomniany błąd może dotyczyć np. firewall’a, który na stacjach docelowych blokuje RPC.

    • Łukasz Skalikow napisał(a):

      Wpisz nazwę serwera bez podawania domeny. Poza tym użytkownika podajemy PRZED serwerem, czyli jak w przykładzie:
      msg nazwa_użytkownika /server:nazwa_serwera wiadomość

  5. m4ko napisał(a):

    System operacyjne na obu komputerach to Windows 7 Professional. Co do firewall’a, to mam go wyłączyć, czy może trzeba jakąś regułę utworzyć?

    • Łukasz Skalikow napisał(a):

      Tak, trzeba na zdalnej maszynie zezwolić na ruch po porcie 445. Reguła nazywa się „Allow Remote Administration Exception policy”.

      Najłatwiej:
      netsh firewall set portopening tcp 445 smb enable

  6. MARK-62 napisał(a):

    Witam,nie mogę wysłać wiadomości sieciowej błąd 1722 lub 5,zależy jak wpiszę.Oba systemy to win.7

  7. m4ko napisał(a):

    U mnie dzieje się to samo… Co jest nie tak?

  8. marzena napisał(a):

    witam, probuje wyslac wiadomosc: msg komp01 prosze sie wylogowac
    i dostaje komunikat: komp01 nie istnieje lub jest odlaczony
    a wiem ze istnieje i jest zalaczony bo lacze sie z nim pulpite zdalnym..
    co robie zle?

  9. Zamoyski napisał(a):

    A jak wysłać wiadomość z Win 8 na Win XP?

  10. Anonim napisał(a):

    witam jak właśnie wysłać wiadomosc z win 8 na win xp ?

  11. paweł napisał(a):

    jak to zrobiłes ?

  12. Rafał napisał(a):

    Witam,
    pracujemy w firmie w systemie terminalowym na Windows Server 2008 R2 Standard.
    Zdarza się że potrzebuję poinformować użytkowników aby zakończyli pracę ponieważ są prowadzone jakieś prace. Próbowałem używać komend „send net” ale doczytałem że w tej wersji to nie działa. Zacząłem więc męczyć msg, ale też nie działa. Albo odbija mi błąd 5 jeśli piszę na konkretnego użytkownika, albo informuje mnie, że dany komputer/ server nie istnieje. Co ciekawe kiedy zrobię test ping to pięknie wszystko wraca… AllowRemote ma wartość 1. Nie wiem już gdzie może być błąd.

    Czy mógłbym liczyć na jakąś podpowiedź?

  13. Benko napisał(a):

    Hej, a mi nie wychodzi:
    Windows Server 2008 R2
    Wpisuje tak:
    psexec.exe msg potem nazwę użytkownika jaką mam w AD, potem nazwę serwera – próbowałem też jego adres IP potem time:300 no i tekst, wywala mi błąd: msg exited with error code 1
    Za wszelką pomoc dziękuje

    • Dariusz Góra napisał(a):

      Do MSG nie jest potrzebny psexec. Program sam wie jak się dostać do zdalnego komputera.

    • Benko napisał(a):

      Dzięki, rzeczywiście nie trzeba, tylko się zastanawiam dlaczego pojawia się komunikat: jan kowalski nie istnieje lub jest odłączony kiedy w AD dana osoba ma np. tak: Jan Kowalski to w skrócie się loguje na swoim komputerze jako jkowalski no i tą nazwę wpisuje a pojawia mi się błąd…
      jak wpisuję nazwę głównego admina na serwerze to komunikat dochodzi…kurcze…:(

    • Benko napisał(a):

      może, jest jakieś polecenie które sprawdza listę użytkowników?

    • Benko napisał(a):

      AllowRemote ma wartość 1.
      Gdzie to trzeba zmienić?

    • Benko napisał(a):

      sorry za bardzo chaotycznie robie…

    • Benko napisał(a):

      AllowRemote było ustawione na 1…choinka…

  14. Anonim napisał(a):

    Jest może taka komenda która wyświetli listę użytkowników w sieci? Albo nazw komputerów?

  15. Patriarcha napisał(a):

    Witam
    A w jaki sposób za pomoca msg wysłać wiadomość do komputerów w całej domenie, tak jak to było w NET SEND ?

    • Łukasz Skalikow napisał(a):

      Cześć,
      Możesz zapisać wszytskie nazwy komputerów w pliku txt i uruchomić MSG.exe z batcha z pętlą:
      FOR /F %%a IN (pcs.txt) DO msg * /server:%%a wiadomosc

  16. KafeCraft napisał(a):

    Gdy włączam MSG wyłącza mi się po mniej więcej jednej setnej sekundy. Co robić?

    • Lrrr napisał(a):

      Wpisz w notatniku w jednej linii msg * /server:nazwa_serwera jakaś_wiadomość w drugiej PAUSE, zapisz jako plik.bat, odpal go, i na ekranie być może dojrzysz jakiś błąd, który zwraca msg.

  17. lekarzpila napisał(a):

    Witam.
    Mam cały czas ten sam problem: „Wystąpił błąd 5 podczas uzyskiwania nazw sesji”
    Zmienilem w rejestrze wartosc na 1.
    Zapora wylaczona, antywirus tez, (nie mam domen) Sam do siebie moge wyslac komunikat:
    msg * /server:Pawel Test
    Działa.
    Próbowałem na innych kompach to samo. Probowalem na Windows XP net send – tam dziala ale tylko z kompami XP.
    Windows 7 wogole nie dziala poslaniec…
    Co moze byc nie tak?

  18. wojtess napisał(a):

    a jak sprawdzić nazwę bo dziala mi jak wysyłam do wszystkich „*” ale inaczej nie

  19. scribe_pl napisał(a):

    czy MSG działa tylko na serwerze? np serwerze terminalowym.

    czy można wysłać w ramach domeny? tzn tylko na dany komputer?

    i czy klucz rejestru musi być na stacji nadającej? czy może na docelowej?

    • Łukasz Skalikow napisał(a):

      MSG może wysyłać wiadomości zarówno na serwery jak i PC.

      W ramach domeny, czyli na przykład na wszystkie komputery? Oczywiście da się, jak w batchu użyjesz pętli FOR i wyszukasz wszystkie komputery w domenie np DSQUERY. Zachęcam do eksperymentowania.

      Klucz rejestru dotyczy stacji docelowej.

    • MIchał napisał(a):

      Witaj, nie bardzo rozumiem, ” Windows serwer R2 w domenie kilkadziesiąt stacji jak korzystając z MSG wysłać natychmiast jedną wiadomość do wszystkich, z góry THX, Michał

Dodaj komentarz