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