I've wrote down a script/helper to add me in the task of adding some domain group to some local group, wrapping around 'net localgroup'. Script attached. The script, on console, from SYSTEM user (the same that run wpkg) seems to work well: check, add and remove membership correctly. Used inside wpkg recipe (on action and check condition) behave strangely. Look at this. From wpkg log: 2012-02-14 18:10:55, DEBUG : Executing command: '"\\FILE\wpkg\tools\setlgrp.bat" check \"\\FILE\wpkg\packages\sudowin\sudoers-SANVITO.grp\" SANVITO'. 2012-02-14 18:10:56, DEBUG : Execute check for program '"\\FILE\wpkg\tools\setlgrp.bat" check \"\\FILE\wpkg\packages\sudowin\sudoers-SANVITO.grp\" SANVITO' returned '0'. Evaluating condition 'exitcodeequalto' revealed true when comparing to expected value of '0'. from console: C:\WINDOWS\system32>"\\FILE\wpkg\tools\setlgrp.bat" check \"\\FILE\wpkg\packages\sudowin\sudoers-SANVITO.grp\" SANVITO C:\WINDOWS\system32>echo %ERRORLEVEL% 1 C:\WINDOWS\system32> indeed the right answer is '1', because i've removed the membership manually to test check condition. Someone can help me? PS: anothe little mystere came from " escaping... if i run: "\\FILE\wpkg\tools\setlgrp.bat" check "\\FILE\wpkg\packages\sudowin\sudoers-SANVITO.grp" SANVITO return strange errors, i have to escape the " ... boh... -- dott. Marco Gaiarin GNUPG Key ID: 240A3D66 Associazione ``La Nostra Famiglia'' http://www.sv.lnf.it/ Polo FVG - Via della Bont�, 7 - 33078 - San Vito al Tagliamento (PN) marco.gaiarin(at)sv.lnf.it tel +39-0434-842711 fax +39-0434-842797 Dona il 5 PER MILLE a LA NOSTRA FAMIGLIA! http://www.lanostrafamiglia.it/chi_siamo/5xmille.php (cf 00307430132, categoria ONLUS oppure RICERCA SANITARIA) -- dott. Marco Gaiarin GNUPG Key ID: 240A3D66 Associazione ``La Nostra Famiglia'' http://www.sv.lnf.it/ Polo FVG - Via della Bontà, 7 - 33078 - San Vito al Tagliamento (PN) marco.gaiarin(at)sv.lnf.it tel +39-0434-842711 fax +39-0434-842797 Dona il 5 PER MILLE a LA NOSTRA FAMIGLIA! http://www.lanostrafamiglia.it/chi_siamo/5xmille.php (cf 00307430132, categoria ONLUS oppure RICERCA SANITARIA) -------------- next part -------------- @ECHO OFF :: :: Script che si preoccupa di modificare le appartenenze ai gruppi locali, :: usando 'net setlocalgroup'. :: Riceve come input la modalità (check, add, delete), il nome del file :: contenente le appartenenze (una per riga), nella forma: :: <gruppo locale><puntoevirgola><gruppo o utente di dominio> :: e il nome del dominio. :: :: CHANGELOG :: (Wed Jan 25 18:22:04 CET 2012) :: + prima versione :: Un po' di verifiche... :: if "%2" == "" ( goto exit1 ) if not exist "%2" ( goto exit1 ) if "%3" == "" ( goto exit1 ) :: modo verifica :: if "%1" == "check" ( for /f "tokens=1,2 delims=;" %%a in (%2) do ( rem echo net localgroup "%%a" pipe find /i "%3\%%b" net localgroup "%%a" | find /i "%3\%%b" >nul if ERRORLEVEL 2 goto exit1 if ERRORLEVEL 1 ( goto exit1 ) ) goto exit0 ) :: modo add :: if "%1" == "add" ( for /f "tokens=1,2 delims=;" %%a in (%2) do ( rem echo net localgroup "%%a" pipe find /i "%3\%%b" net localgroup "%%a" | find /i "%3\%%b" >nul if ERRORLEVEL 2 goto exit1 if ERRORLEVEL 1 ( net localgroup "%%a" "%3\%%b" /add >nul if ERRORLEVEL 1 ( goto exit1 ) ) ) goto exit0 ) :: modo delete :: Purtroppo il controllo su ERRORLEVEL funziona in modo ''maggiore :: o uguale di'', e non si può usare %ERRORLEVEL% perchè una volta :: istanziata fa casino. Si veda: :: http://support.microsoft.com/kb/39585/it :: http://blogs.msdn.com/b/oldnewthing/archive/2008/09/26/8965755.aspx :: if "%1" == "delete" ( for /f "tokens=1,2 delims=;" %%a in (%2) do ( rem echo net localgroup "%%a" pipe find /i "%3\%%b" net localgroup "%%a" | find /i "%3\%%b" >nul if ERRORLEVEL 2 goto exit1 if ERRORLEVEL 1 ( echo. >nul ) else ( if ERRORLEVEL 0 ( rem echo net localgroup "%%a" "%3\%%b" /delete net localgroup "%%a" "%3\%%b" /delete >nul if ERRORLEVEL 1 ( goto exit1 ) ) ) ) goto exit0 ) :: se il parametro è errato, lascio correre ed esco male :: :: Molto semplicemente... esco male :: :exit1 ::echo falso exit /b 1 :: Molto semplicemente... esco bene :: :exit0 ::echo vero exit /b 0 |