I wrote a script to make this work, but read the comments in my script because you must enable powershell remote execution on all PCs (ex. via group policy):
@echo off
rem --- John Neumann, 23mar2011
rem --- Vista & Windows 7 msg.exe only works on your local PC or over network
rem --- to Terminal Servers, but you cannot msg.exe remotely to a workstation.
rem --- This script allows you to do like the old pre-vista "net send"
rem --- to send to all PCs and Servers on your Active Directory domain.
rem --- All PCs need powershell remote executions turned on and this
rem --- could be seen as a security risk.
rem --- Put this command into your logon script or group policy:
rem ------ powershell enable-psremoting -force
if '%1'=='' (
echo Usage: netsend.bat "Thing to say to all networked PCs & Servers"
pause
goto :EOF
)
rem --- %%~NXa gets rid of leading directory type \ characters,
rem --- doing filename only (which is PC name in this case)
echo Your taskbar will temporarily have many minimized processes as I send messages.
for /f "usebackq" %%a in ( `net view^|find "\\"` ) do (
echo msg to %%~NXa
rem --- start allows immediate successive launches, /min=minimized
rem --- /normal=don't hog CPU, /time:86400=stay up 24 hours (default=1 minute)
start /MIN /NORMAL "title msg to %%~NXa" powershell -command Invoke-Command -Computername %%~NXa {msg.exe /time:86400 * %1 %2 %3 %4 %5 %6 %7 %8 %9}
)
echo Your taskbar will temporarily have many minimized processes as I send messages.
echo Each taskbar process will go away as messages complete.
rem --- Done