Thought I'd share my script - I didn't immediately find anything I could use so I created this. Adjust as needed (especially the variables at the beginning!)
Code:
setlocal ENABLEDELAYEDEXPANSION
Set BESServerInstance=Server\BLACKBERRY
set MailServer=exchange
set BESUsers=0
set UsersUpdated=0
set FromEmailAddress=You@yourdomain.com
set ToEmailAddress=Them@yourdomain.com
bcp "set nocount on SELECT RIGHT(besmgmt.dbo.SyncDeviceMgmtSummary.PhoneNumber, 10) AS Expr1, besmgmt.dbo.UserConfig.DisplayName FROM besmgmt.dbo.SyncDeviceMgmtSummary INNER JOIN besmgmt.dbo.UserConfig ON besmgmt.dbo.SyncDeviceMgmtSummary.UserConfigId = besmgmt.dbo.UserConfig.Id WHERE (RIGHT(besmgmt.dbo.SyncDeviceMgmtSummary.PhoneNumber,10) <> N'')" queryout "%~dp0Output.txt" -c -t, -S "%BESServerInstance%" -T
type "%~dp0BES2ADHeader.txt" > "%~dp0Email.txt"
for /f "usebackq tokens=1* delims=," %%i in ("%~dp0output.txt") do (
set /a BESUsers+=1
set PhoneNumber=%%i
set PhoneNumberFormatted=^(!PhoneNumber:~0,3!^) !PhoneNumber:~3,3!-!PhoneNumber:~6!
echo !PhoneNumberFormatted!
dsquery user -name "%%j" | dsget user -mobile | find "!PhoneNumberFormatted!"
if errorlevel 1 (
set /a UsersUpdated+=1
dsquery user -name "%%j" | dsmod user -mobile "!PhoneNumberFormatted!"
echo %%j: !PhoneNumberFormatted! >> "%~dp0Email.txt"
)
)
echo.>> "%~dp0Email.txt"
echo Total BES Users: %BESUsers% >> "%~dp0Email.txt"
echo Total BES Users Updated: %UsersUpdated% >> "%~dp0Email.txt"
if %UsersUpdated% GTR 0 "%~dp0blat" "%~dp0Email.txt" -q -to %ToEmailAddress% -s "BES to AD Update" -priority 1 -f %FromEmailAddress% -server %MailServer%
You need blat to email out, and bcp.exe and bcp.rll to run this (in the same directory or within a known path). It also has to be either run as a Trusted Windows account, or you'll have to provide the sa name and change the credentials bcp uses to fetch the data.