Я только что написал сценарий PowerShell, в котором перечислены все общие папки всех моих серверов + получены все права NTFS на них.
Большие строки:
Get-ADComputer -LDAPFilter "(&(objectcategory=computer)(OperatingSystem=*server*))" -Properties name |
Select-Object name -ExpandProperty name >> "$path\servers.txt"
foreach ($_ in Get-Content "$path\servers.txt") {
Get-WmiObject Win32_Share -Computer $_ |
Format-Table path -AutoSize |
Out-File "$path\Path\$_.txt"
}
foreach ($SharedFolder in $SharedFolders) {
$lecteur = [int][char]'A'
1..26 | ForEach-Object {
$LR = [char]$lecteur
$contenu = [System.IO.File]::ReadAllText("$lgpath\$SharedFolder.txt").Replace("${LR}:", "\\$SharedFolder\$LR$").Replace("path", "").Replace("----", "").Replace(" ", "").Replace("\ ", "\")
[System.IO.File]::WriteAllText("$lgpath\$SharedFolder.txt", $contenu)
$lecteur++
}
(Get-Content "$lgpath\$SharedFolder.txt" | Where-Object {
$_ -notmatch '^\s*$'
}) | Out-File "$lgpath\$SharedFolder.txt"
}
foreach ($SharedFolder in $SharedFolders) {
$droits = foreach ($ligne in Get-Content "$lgpath\$SharedFolder.txt") {
Get-NTFSAccess -Path "$ligne"
}
$droits |
select Fullname, Account, AccessRights, InheritanceEnabled |
Export-Csv "$Path\NTFS\NTFS_$SharedFolder.csv" -NoTypeInformation -Delimiter ";" -Encoding UTF8
}
Это нормально работает длясейчас, но я хотел бы получить еще одну информацию: последнюю учетную запись, которая редактировала права NTFS для каждой папки.