Ahoj,
tak pomocí ICACLS se to zvládlo
viz:
icacls C:\ /grant:r BUILTIN\Users:(CI)
icacls C:\ /grant BUILTIN\Users:(CI)(IO)(WD) atd atd..
Co teď zkoumám je deployment těchto nastavení na několik PC. Normálně bych použil příkaz
FOR /F "tokens=1 delims=," %%G IN (seznam.txt) DO icacls \\%%G\C$ /grant:r BUILTIN\Users:(CI),
což by mi na všech PC v seznam.txt provedlo nastavení icacls na C:\.
Problém je pokud těch ICACLS commandů mám několik (pár pro C:\, pár pro D:\) a tu proměnou %%G bych chtěl použít i v příkazu ICACLS, proměnná se na dalším řádku příkazu ztratí..
@echo off
FOR /F "tokens=1 delims=," %%G IN (seznam.txt) DO icacls \\%%G\C$ /grant testdomain\testuser%%G:F
icacls \\%%G\D$ /grant testdomain\testuser%%G:F
icacls \\%%G\E$ /grant testdomain\localuser%%G:F
První příkaz se provede ale u dalších už to pokud používám proměnné hodí chybu
testdomain\localuser%G: No mapping between account names and security IDs was do
ne. Musel bych natvrdo napsat testdomain\localuser01:F NEBO všechny příkazy dát do jedné řádky
icacls \\%%G\C$ /grant testdomain\testuser%%G:F & icacls \\%%G\D$ /grant testdomain\testuser%%G:F % ... což se obávám že jisté omezení v délce příkazu asi bude a mě se to nebude vejít.
Existuje na to nějaké řešení? Jak spustit batku na X PC o hodně řádcích kde se vyskytují proměnné?
Proměnnou %%G používám jak pro identifikaci PC na kterém to chci spustit tak pro identifikaci uzivatele (proměnná obsahuje nějaké číslo) .. tj pc bude např. 01,02,03 .. a uživatelé localuser01,localuser02 .. na pc 01 bude localuser01 - využití proměnných se zde tedy přímo vybízí.