Ho scritto questo script
Codice:
# Parametri da inserire in una riga di comando:
# $RemovedSID Variabile che contiene un SID di un account rimosso di Windows 7 da rimuovere dal sistema.
param ($RemovedSID)
# Esamina le partizioni di un hard-disk e gli hive del registro per rimuovere il SID orfano dell'account rimosso dai ACL delle directory/file e delle
# chiavi del registro.
New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS
New-PSDrive -Name HKCC -PSProvider Registry -Root HKEY_CURRENT_CONFIG
$Drives = [Environment]::GetLogicalDrives(), 'HKLM:\', 'HKCR:\', 'HKU:\', 'HKCC:\'
$Drives | Get-ChildItem -Recurse -Force |
ForEach-Object {
"Verifica di {0}..." -f $_
# Recupera le ACL dell'oggetto
$ObjectACL = $_.GetAccessControl()
# Recupera le regole per il SID desiderato
$BadRules = @(
$ObjectACL.GetAccessRules($true, $false, [Security.Principal.SecurityIdentifier]) |
? { $_.IdentityReference -eq $RemovedSID }
)
if ($BadRules.Count -gt 0) {
"Rimozione regole orfane (elementi trovati: {0})..." -f $BadRules.Count
# Rimuove le regole orfane
$BadRules |
ForEach-Object {
$ObjectACL.RemoveAccessRule($_)
}
# Aggiorna le ACL dell'oggetto
$_.SetAccessControl($ObjectACL)
}
}
ma, eseguendolo, mi sono accorto che rimuove l'eventuale SID orfano soltanto dai file/directory/chiavi comuni e NON dai questi stessi oggetti aventi tutti gli altri attributi (tipo, nascosto, di sola lettura, di sistema, ... ). Quindi, come devo modificare questo script per aggiungere anche questa "funzionalita`"?
GRAZIE
CIAO
Segnalibri