[wpkg-users] [OT] i hate script in cmd... ;(((
Marco Gaiarin
gaio at sv.lnf.it
Tue Feb 14 22:52:08 CET 2012
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
More information about the wpkg-users
mailing list