Divers pb sur xcacls (et Subinacl)

Le
Trax
Bonjour,

voici ma problématique, suite à une migration, je dois faire le nettoyage
dans les droits ntfs.
il y a des comptes connus (DOMAINgroupe) et des SID qui n'ont plus lieux
d'être utilisés pour les droits

Avec SubInAcl, sauf erreur de ma part, on ne peut pas utiliser les SID?!

Je me suis donc tourné vers xcacls, et je rencontre 2 problèmes, j'ai un
script qui utilise les Subdirectory, grosso modo:

--
[]
ShowSubfolders FSO.GetFolder(objShrPath)
Sub ShowSubFolders(Folder)
For Each Subfolder in Folder.SubFolders

WSHShell.run ("""" & sys32 & "cscript.exe"" """ & xcacls & """ """ &
Subfolder & """ /t /e /r ""SID#S-1-5-21-1659004503-606747145-839522115-1178""
/r ""SID#S-1-5-21-1659004503-606747145-839522115-1179"" /r ""DOMAINUSER"" /l
" & logFileXcacls)

MyLogFile.WriteLine ("""" & sys32 & "cscript.exe"" """ & xcacls & """ """
& Subfolder & """ /t /e /r
""SID#S-1-5-21-1659004503-606747145-839522115-1178"" /r
""SID#S-1-5-21-1659004503-606747145-839522115-1179"" /r ""DOMAINUSER"" /l "
& logFileXcacls)
MyLogFile.WriteLine ("Erreur :" & Err.Number & Err.Description)

WScript.sleep 3000

ShowSubFolders Subfolder
Next
End Sub
[]
--

Les variables sont correctes.
Seulement tous les dossiers ne sont pas traités apparemment! Il me semble
que si une commande est trop longue, celles qui sont lancées ensuite ne sont
pas prises en compte (du moins celles qui tentent de se lancer avant la fin
de cette "longue" commande).

J'ai également 2 log, d'un coté les commandes qui sont envoyées (ce qui
donne de tête : "c:winsys32cscript.exe" "c:scriptxcacls.vbs" "d:folder"
/t /e /r "SID#S-1-5-21-1659004503-606747145-839522115-1178" /r
"SID#S-1-5-21-1659004503-606747145-839522115-1179" /r "DOMAINUSER" /l
"c:log.txt" ) et un autre qui est celui de xcacls.
Dans le 1er log, il m'indique bien toute les commandes, mais dans le log de
xcacls, il y en a beaucoup moins! ce qui me fait revenir sur l'idée qu'il
faut limiter à une commande.

De plus, err.number et err.description me retournent systématiquement "0"

Définir le wscript.sleep à une grande valeur ne me semble pas être propre
Comment faire pour définir la fin du WSHShell.run avant le lancement de la
suivante??


Merci
Trax
ps: existe-t-il une solution plus simple? :D
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
jbongran
Le #661081
Trax wrote:
Bonjour,

voici ma problématique, suite à une migration, je dois faire le
nettoyage dans les droits ntfs.
il y a des comptes connus (DOMAINgroupe) et des SID qui n'ont plus
lieux d'être utilisés pour les droits...

Avec SubInAcl, sauf erreur de ma part, on ne peut pas utiliser les
SID?!

Je me suis donc tourné vers xcacls, et je rencontre 2 problèmes, j'ai
un script qui utilise les Subdirectory, grosso modo:

-----------------------------------------------------------------------
[...]
ShowSubfolders FSO.GetFolder(objShrPath)
Sub ShowSubFolders(Folder)
For Each Subfolder in Folder.SubFolders

WSHShell.run ("""" & sys32 & "cscript.exe"" """ & xcacls & """ """ &
Subfolder & """ /t /e /r
""SID#S-1-5-21-1659004503-606747145-839522115-1178"" /r
""SID#S-1-5-21-1659004503-606747145-839522115-1179"" /r
""DOMAINUSER"" /l " & logFileXcacls)

MyLogFile.WriteLine ("""" & sys32 & "cscript.exe"" """ & xcacls &
""" """ & Subfolder & """ /t /e /r
""SID#S-1-5-21-1659004503-606747145-839522115-1178"" /r
""SID#S-1-5-21-1659004503-606747145-839522115-1179"" /r
""DOMAINUSER"" /l " & logFileXcacls)
MyLogFile.WriteLine ("Erreur :" & Err.Number & Err.Description)

WScript.sleep 3000

ShowSubFolders Subfolder
Next
End Sub
[...]
-----------------------------------------------------------------------

Les variables sont correctes.
Seulement tous les dossiers ne sont pas traités apparemment! Il me
semble que si une commande est trop longue, celles qui sont lancées
ensuite ne sont pas prises en compte (du moins celles qui tentent de
se lancer avant la fin de cette "longue" commande).

J'ai également 2 log, d'un coté les commandes qui sont envoyées (ce
qui donne de tête : "c:winsys32cscript.exe" "c:scriptxcacls.vbs"
"d:folder" /t /e /r
"SID#S-1-5-21-1659004503-606747145-839522115-1178" /r
"SID#S-1-5-21-1659004503-606747145-839522115-1179" /r "DOMAINUSER"
/l "c:log.txt" ) et un autre qui est celui de xcacls.
Dans le 1er log, il m'indique bien toute les commandes, mais dans le
log de xcacls, il y en a beaucoup moins! ce qui me fait revenir sur
l'idée qu'il faut limiter à une commande.

De plus, err.number et err.description me retournent systématiquement
"0"

Définir le wscript.sleep à une grande valeur ne me semble pas être
propre... Comment faire pour définir la fin du WSHShell.run avant le
lancement de la suivante??


Merci
Trax
ps: existe-t-il une solution plus simple? :D


Supprimer le wscript.sleep et attendre la fin de chaque commande ?
La méthode run sans paramètre autre que la ligne de commande à exécuter
retourne immédiatement la main au script, avec un pseudo code de retour
toujours a 0, à ne pas confondre avec les codes de retour utilisés si le
paramètre bWaitOnReturn est positionné à True. En gros, très gros même:
strCmd = """" & sys32 & "cscript.exe"" """ & xcacls & """ """ & Subfolder &
""" /t /e /r ""SID#S-1-5-21-1659004503-606747145-839522115-1178"" /r
""SID#S-1-5-21-1659004503-606747145-839522115-1179"" /r ""DOMAINUSER"" /l "
& logFileXcacls
strReturn = WSHShell.run (strCmd, 1, True)

MyLogFile.WriteLine (strCmd & ",1, True")
MyLogFile.WriteLine "Code de sortie: " & strReturn

Gilles LAURENT
Le #660553
"Trax" news:
| Bonjour,

Bonjour,

| voici ma problématique, suite à une migration, je dois faire le
| nettoyage dans les droits ntfs.
| il y a des comptes connus (DOMAINgroupe) et des SID qui n'ont plus
| lieux d'être utilisés pour les droits...
|
| Avec SubInAcl, sauf erreur de ma part, on ne peut pas utiliser les
| SID?!
[...]

L'outil subinacl gère parfaitement bien les SIDs. Si vous souhaitez
supprimer les SIDs non résolus dans le nouveau domaine alors la vous
devriez utiliser la commande suivante :
> subinacl /subdirectories <root_folder>
/cleandeletedsidsfrom=<old_domain>

--
Gilles LAURENT
http://glsft.free.fr
Publicité
Poster une réponse
Anonyme