hannsgmaulwurf
Goto Top

(Bildschirm-)Nachricht an alle Domänenbenutzer oder -computer senden

Bei allen an der Domain angemeldeten Benutzern oder Computern eine Meldung/Nachricht auf dem Bildschirm ausgeben lassen.

Hallo zusammen,

wie oben schon erwähnt habe ich die Anforderung, innnerhalb einer Windows-Domäne (DC ist Server 2008, Clients XP und 7) Benachrichtigungen bei allen Benutzern bzw. Computern, die in diesem Moment an der Domain angemeldet sind, auf dem Desktop anzuzeigen. Gesendet werden sollen diese Nachrichten zunächst vom DC, später dann event. auch von einem beliebigen Domänencomputer.

Mit dem Befehl MSG kann man so etwas via Kommandozeile realisieren. Allerdings nur für einen einzelnen User bzw. alle User die an einem einzelnen Client angemeldet sind:
msg /SERVER:ClientcomputerA UserA Nachricht für UserA 
msg /SERVER:ClientcomputerA * Nachricht für alle User auf ClientcomputerA 

Nun soll es aber möglich sein, innerhalb der Domain bzw. des Netzwerkes allen Benutzern, die an allen Computern angemeldet sind (egal, ob direkt oder remote) so eine Benachrichtigung vor die Nase zu setzen.

Teste das jetzt schon eine Weile erfolglos und möchte es nach Möglichkeit vermeiden, extra Software dafür einzusetzen.

Hat noch jemand eine Idee bzw. Erfahrung mit solchen Anforderungen?

Besten Dank vorab und schönen Nachmittag.

Content-ID: 193585

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

Ausgedruckt am: 14.11.2024 um 13:11 Uhr

DerWoWusste
DerWoWusste 01.11.2012 um 14:57:44 Uhr
Goto Top
Moin.

Wie wär's mit
chcp 1252
net view >%temp%\zielpcs.txt
for /f %%a in (%temp%\zielpcs.txt) do msg * /time:0 /server:%%a Text
chcp 850

In zielpcs.txt kannst Du zuvor noch der Ordnung halber mit sed.exe oder dossr.exe einiges rauslöschen, damit keine Verzögerungen durch falsche Einträge wie "-----------------------------" entstehen.

Nutzen wir so.
hannsgmaulwurf
hannsgmaulwurf 01.11.2012 um 15:20:16 Uhr
Goto Top
Hallo und vielen Dank für deine Hilfe.

Das ganze irgendwie mit einer Liste zu machen und diese Computerliste dann einfach abzuarbeiten ist mir auch schon in den Sinn gekommen, allein das Know-How zur Umsetzung fehlt(e) face-smile

Nach Zweile 3 erhalte ich allerdings die folgende Meldung:

"%%a" kann syntaktisch an dieser Stelle nicht verarbeitet werden.


Zitat von @DerWoWusste:
In zielpcs.txt kannst Du zuvor noch der Ordnung halber mit sed.exe oder dossr.exe einiges rauslöschen, damit keine
Verzögerungen durch falsche Einträge wie "-----------------------------" entstehen.

Entstehen denn nur Verzögerungen und es klappt trotzdem alles oder treten Fehler auf? Warum ich frage? Weil eventuell auf die Bereinigung einer solchen Liste verzichtet werden können muss, denn a) ist das dann schon wieder zu großer Aufwand für "schnell mal eine Nachricht an alle schicken" und b) weiß ich nicht, ob ich User Meier-Schulze-Schmidt das zumuten kann/will... face-smile
DerWoWusste
DerWoWusste 01.11.2012 um 15:30:50 Uhr
Goto Top
Alte Falle: %%a in Batches verwenden, %a direkt in der Kommandozeile.
Entstehen denn nur Verzögerungen und es klappt trotzdem alles oder treten Fehler auf?
nur Verzögerungen, aber evtl. viele.
hannsgmaulwurf
hannsgmaulwurf 01.11.2012 um 15:58:41 Uhr
Goto Top
Zitat von @DerWoWusste:
Alte Falle: %%a in Batches verwenden, %a direkt in der Kommandozeile.
Aaaahhh ok, und wieso ist das so (mal ganz nebenbei gefragt)?

Habe das jetzt mal testhalber durchlaufen lassen und neben den Fehlermeldungen für ------ usw. auch Fehlermeldungen für die Computernamen bekommen, da diese ja mit \\ in der Liste angegeben werden.

Aber im Großen und ganzen bin ich recht zuversichtlich, jetzt werde ich mir mal Gedanken machen wich ich die erzeugte Liste um die überflüssigen Einträge/Zeichen bereinigen kann. Vielleicht gibts ja für notepad++ oder den TotalCommander entsprechende Aufrufe, die das automatisiert erledigen.

Bis hierher erstmal vielen Dank für deine schnelle Hilfe DerWoWusste!!! ;)
hannsgmaulwurf
hannsgmaulwurf 07.11.2012 um 12:16:25 Uhr
Goto Top
Hallo,

nach einiger Tüftelei bin ich zu einem Ergebnis gekommmen, das in meiner kleinen Netzumgebung ganz gut funktioniert. Vielleicht interessierts ja den einen oder anderen:

Die Batch listet die angemeldeten Computer im Netz auf und säubert diese Liste bis auf die reinen Computernamen. Dann wird eine Nachricht an alle an den aufgelisteten Computern angemeldeten Benutzer geschickt und in eine Logdatei geschrieben.

@echo off
echo Bitte Nachrichtentext eingeben und mit ENTER absenden:
echo.

set CompListeLang=%CD%\LOG\msg_complistelang.txt
set CompListeKurz=%CD%\LOG\msg_complistekurz.txt
set CompListeClean=%CD%\LOG\msg_complisteclean.txt
set Nachrichten=%CD%\LOG\msg_nachrichten.log

set /p Nachricht=

chcp 1252 >nul

echo %date% %time% >>%Nachrichten%
echo Nachricht: %Nachricht% >>%Nachrichten%
echo Von: %computername%\%username% >>%Nachrichten%
echo An: >>%Nachrichten%
echo.

net view >%CompListeLang%

findstr \\ %CompListeLang% >%CompListeKurz%

for /f "tokens=1 delims=\\ " %%a in (%CompListeKurz%) do echo %%a >> %CompListeClean%  

for /f %%y in (%CompListeClean%) do (
	msg * /time:0 /server:%%y %Nachricht%
	echo %%y >>%Nachrichten%
)

echo. >>%Nachrichten%

echo.
echo Nachricht gesendet. Programm mit beliebiger Taste beenden.
echo.

del %CompListeLang%
del %CompListeKurz%
del %CompListeClean%

chcp 850 >nul

pause
Rennpappe
Rennpappe 07.07.2017 um 13:24:59 Uhr
Goto Top
funktioniert leider nicht, ein haufen Fehlermeldungen
hannsgmaulwurf
hannsgmaulwurf 31.07.2017 um 11:08:45 Uhr
Goto Top
Ach herje, das ist ja schon hundert Jahre her. Soweit ich weiß, wird das Skript dort in dieser Netzwerkumgebung immer noch eingesetzt.
Ich kann bei bächster Gelegenheit dort mal schauen, ob das Skript noch genutzt wird und funktioniert, will aber nichts versprechen.
malilo99
malilo99 22.09.2017 um 08:27:19 Uhr
Goto Top
lösche mal das Unterverzeichnis LOG aus dem Script, dann läuft es.