J'ai écrit un petit script pour me donner les ACL d'accès d'un certain chemin et de tous ses sous-répertoires et les mettre dans un fichier .txt, mais j'en ai besoin dans un autre format pour créer une base de données.Comment obtenir FileSystemRights dans un certain format?
Une partie de la sortie ressemble à ceci:
Fullname S FileSystemRights S AccessControlType ---------- ------------------ ------------------ C:\temp ; ReadAndExecute, Synchronize ; Allow;
Alors ce que je dois la sortie pour ressembler à quelque chose comme ceci:
Fullname S FileSystemRights S AccessControlType ---------- ------------------ ------------------ C:\temp ; ReadAndExecute ; Allow; C:\temp ; Synchronize ; Allow;
Comme vous pouvez le voir, je besoin des droits individuels lignes individuelles et non empilés ensemble.
Ce que je l'ai fait regarde loin est le suivant, peut-être il aide (je suis parti des trucs sans importance):
(Get-Acl $TestPath).Access |
Format-Table -AutoSize -HideTableHeaders @{L="Fullname";E={$TestPath}},
@{L="S";E={";"}}, FileSystemRights,
@{L="S";E={";"}}, AccessControlType,
@{L="S";E={";"}}, IdentityReference,
@{L="S";E={";"}}, IsInherited,
@{L="S";E={";"}}, InheritanceFlags,
@{L="S";E={";"}}, PropagationFlags |
Out-File $Out -Append -Width 500
function RecDirs {
$d = $Args[0]
$AktRec++
$dirs = dir $d | where {$_.PsIsContainer}
if ($AktRec -lt 3) {
foreach($di in $dirs) {
if ($di.FullName -ne $null) {
(Get-Acl $di.Fullname).Access |
Format-Table -AutoSize -HideTableHeaders @{L="Fullname";E={$di.FullName}},
@{L="S";E={";"}}, FileSystemRights,
@{L="S";E={";"}}, AccessControlType,
@{L="S";E={";"}}, IdentityReference,
@{L="S";E={";"}}, IsInherited,
@{L="S";E={";"}}, InheritanceFlags,
@{L="S";E={";"}}, PropagationFlags |
Out-File $Out -Append -Width 500
}
RecDirs($di.Fullname)
}
}
}
RecDirs($TestPath)
Jetez un oeil à export-csv – guiwhatsthat