No banner in farm
iscriviti alla newsletter

VMexperts.org - 100% Virtualization Technologies

Home di ISAserver.it
 
Articoli
Autori di VMexperts.org
Forum Tecnico Iscriviti al feed RSS del forum di VMexperts.org
Blog di Luca Conte Iscriviti al feed RSS del blog di VMexperts.org
Video e Strumenti
Eventi Tecnici e Formazione
Contatti
Consigliati da ISAserver.it

No banner in farm
WORKBOOK
Quale prodotto utilizzi

Quale prodotto utilizzi

ISAserver.it - Articoli, Guide, Tutorial e molto altro su ISA Server/Forefront TMG
Nr.1 Unofficial European Website on Microsoft ISA Server
Community tecnica italiana sul VOIP
Community tecnica italiana sul VOIP
Virtualizzazione.com - Servizi business di virtualizzazione
Servizi business sulla virtualizzazione
 
VMexperts.org Forum
VMexperts.org Forum
Home | Profile | Register | Active Topics | Members | Search | FAQ
 All Forums
 Powershell
 Generale
 Script per eliminare gli riferimenti di un account

Note: You must be registered in order to post a reply.
To register, click here. Registration is FREE!

Screensize:
UserName:
Password:
Format Mode:
Format: BoldItalicizedUnderlineStrikethrough Align LeftCenteredAlign Right Horizontal Rule Insert HyperlinkInsert Email Insert CodeInsert QuoteInsert List
   
Message:

* HTML is OFF
* Forum Code is ON
Smilies
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Clown [:o)]
Black Eye [B)] Eight Ball [8] Frown [:(] Shy [8)]
Shocked [:0] Angry [:(!] Dead [xx(] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

 
   

T O P I C    R E V I E W
balubeto Posted - 25/06/2010 : 12:34:09
CIAO

Potete dare un'occhiata a questo script che, se eseguito da una penna USB e dal Prompt dei comandi dell'amministratore di una qualsiasi edizione di Windows 7 con il comando powershell -ExecutionPolicy Unrestricted -file <unita`_penna_USB>:\RimRifRimAccountDefault.ps1 -RemovedSID '<SID_Account_eliminato>', dovrebbe eliminare tutti gli rifferimenti rimasti di un account di Windows 7 eliminato correttamente da questo S/O:


# 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.
# $RemovedAccountNameDeleted                Variabile che contiene il nome di un account rimosso di Windows 7 da rimuovere dal sistema.

# Variabili definite dall'utente:

# $Drives                                   Variabile che contiene le lettere delle partizioni logiche di un hard-disk e gli hive del registro.
# $ObjectACL                                Variabile che coontiene le ACL dell'oggetto analizzato.
# $BadRules                                 Variabile che permette di decidere se, fra gli ACL di un oggetto, e` contenuto il SID dell'account rimosso.
# $StartKey                                 Variabile che contiene le chiavi del registro da analizzare.
# $ShouldRemove                             Variabile che permette di decidere se rimuovere o meno una chiave del registro a secondo del suo valore.

param ($RemovedSID)
param ($RemovedAccountNameDeleted)

# Funzione che analizza alcune chiavi numeriche del registro relative al servizio Windows Search ed elimina le chiavi superflue che hanno il valore delle
# loro voci "URL" o "Path" pari ad una directory che include ancora il SID orfano dell'account rimosso o il nome di questo account.

function WindowsSearchKeysDeleted ($StartKey)
    {
        Get-ChildItem $StartKey -Recurse |
            ForEach-Object {

            # Verifica URL

                $ShouldRemove = @(Get-ItemProperty $_ URL | Where-Object { $_.URL -eq $RemovedSID or $RemovedAccountNameDeleted}).Count -gt 0)

           # Verifica Path

                $ShouldRemove = $ShouldRemove -or (@(Get-ItemProperty $_ Path | Where-Object { $_.Path -eq $RemovedSID or $RemovedAccountNameDeleted}).Count
                                                                                                                                                      -gt 0)


            # Rimozione chiave corrente e sottochiavi

               if ($shouldRemove) {
                  $_ | Remove-Item -Recurse -WhatIf
               }
            }
    }

# Funzione che rimuove le chiavi o le voci del registro contenenti ancora il SID orfano dell'account rimosso.

fuction KeyAndItemDeleted ($StartKey)
   {
       if ($StartKey -eq 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\NetCache\PurgeAtNextLogoff') {
           set-Location '$StartKey'
           Remove-ItemProperty '$RemovedSID' -WhatIf
       }
       else {
          Set-Location '$StartKey'
          Remove-Item '$RemovedSID' -WhatIf
       }

   }

# 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)

        }

    }


# Rimuove le eventuali chiavi numeriche del registro relative a Windows Search che hanno il valore delle loro voci "URL" o "Path" pari ad una directory che
# include ancora il SID orfano dell'account rimosso o il nome di questo account.

WindowsSearchKeysDeleted -StartKey 'HKLM:\SOFTWARE\Microsoft\Windows Search\CrawlScopeManager\Windows\SystemIndex\DefaultRules'

WindowsSearchKeysDeleted -StartKey 'HKLM:\SOFTWARE\Microsoft\Windows Search\CrawlScopeManager\Windows\SystemIndex\WorkingSetRules'

if (Test-Path 'HKLM:\SOFTWARE\Microsoft\Windows Search\CrawlScopeManager_Previous_Version\Windows\SystemIndex\DefaultRules' -eq "true") {
   WindowsSearchKeysDeleted -StartKey 'HKLM:\SOFTWARE\Microsoft\Windows Search\CrawlScopeManager_Previous_Version\Windows\SystemIndex\DefaultRules' }

if (Test-Path 'HKLM:SOFTWARE\Microsoft\Windows Search\CrawlScopeManager_Previous_Version\Windows\SystemIndex\WorkingSetRules' -eq "true") {
   WindowsSearchKeysDeleted -StartKey 'HKLM:SOFTWARE\Microsoft\Windows Search\CrawlScopeManager_Previous_Version\Windows\SystemIndex\WorkingSetRules' }

WindowsSearchKeysDeleted -StartKey 'HKLM:\SOFTWARE\Microsoft\Windows Search\Gather\Windows\SystemIndex\Sites\LocalHost\Paths'

# Rimuove le eventuali chiavi del registro che hanno, come valore, il SID orfano dell'account rimosso.

KeyAndItemDeleted -StartKey 'HKLM:\SOFTWARE\Microsoft\Windows Media Player NSS\3.0\MAC Access Control'

KeyAndItemDeleted -StartKey 'HKLM:\SOFTWARE\Microsoft\Windows Media Player NSS\3.0\Server Settings'

if (Test-Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList' -eq "true") 
   KeyAndItemDeleted -StartKey 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList' }

if (Test-Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\NetCache\PurgeAtNextLogoff' -eq "true") {
   KeyAndItemDeleted -StartKey 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\NetCache\PurgeAtNextLogoff' }


Vorrei sapere se ho fatto qualche errore sintattico o logico o bug poiche` non ho una macchina a disposizione per provarlo.

GRAZIE

CIAO

balubeto

VMexperts.org Forum © Luca Conte - 2008 - Tutti i diritti riservati Go To Top Of Page
Snitz Forums 2000
No banner in farm


ISAServer.it sostiene la campagna per la riduzione del riscaldamento globale e un uso pił efficiente dell'energia da parte delle infrastrutture tecnologiche