natasha
23-02-2006, 11:36
Buongiorno a tutti,
ho una mezza idea per risolvere il requisito dell'Allegato B della 196/2003 "disabilitare gli account inattivi da più di 180 giorni", per cui datemi una mano che a qualcuno servirà
Partiamo dal seguente script, che disabilita un utente in un dominio, e che chiamerò "DisabilitaUtente.vbs":
Option Explicit
' Dichiarazione delle variabili in cui immagazzinare
' il nome utente, il dominio ed uno switch per lo script,
' oltre all'oggetto Utente.
Dim strNomeUtente, strDominio, blnDisabilita, objUtente
' Se lo script viene lanciato senza argomenti,
' o se viene richiesto l'help con l'usuale /?,
' viene lanciata la procedura "Help
If WScript.Arguments.Count < 1 Then Call Help
If WScript.Arguments(0) = "/?" Then Call Help
' Assegnazione degli argomenti alle variabili.
strNomeUtente = WScript.Arguments(0)
strDominio = WScript.Arguments(1)
blnDisabilita = WScript.Arguments(2)
' Recupera l'oggetto utente.
Set objUtente = GetObject("WinNT://" & strDominio & "/" & strNomeUtente & ",user")
' Imposta il valore della proprietà AccountDisabled, aggiorna le informazioni sull'utente,
' avvisa del completamento dell'esecuzione.
objUtente.AccountDisabled = blnDisabilita
objUtente.SetInfo
WScript.Echo "L'utente " & strNomeUtente & " è stato disabilitato."
Sub Help
WScript.Echo "Modo d'uso: disableuser nome_utente dominio true/false"
WScript.Echo "Questo script abilita/disabilita, in base al valore del terzo argomento, un account utente."
WScript.Echo "Il primo argomento è il nome utente."
WScript.Echo "Il secondo argomento è il nome del dominio."
WScript.Echo "Il terzo argomento è il valore assegnato ad AccountDisabled."
WScript.Echo "Gli argomenti devono essere separati da uno spazio vuoto."
WScript.Echo "Passare come terzo argomento True per disabilitare l'utente."
WScript.Echo "Passare come terzo argomento False per abilitarlo."
WScript.Quit
End Sub
Innanzitutto, occorre modificare l'istruzione
Set objUtente = GetObject("WinNT://" & strDominio & "/" & strNomeUtente & ",user")
per recuperare l'utente di un PC in un workgroup, non in un dominio: qualcuno sa come farlo?
In secondo luogo, occorre mettere in Esecuzione Automatica uno script, chiamiamolo VerificaLog.vbs, che verifica se dall'ultima volta che l'utente si è loggato sono passati più di 180 giorni: in tal caso, VerificaLog.vbs dovrebbe invocare l'esecuzione di DisabilitaUtente.vbs.
Abbiamo qui due ordini di problemi:
- scrivere VerificaLog.vbs
- richiamare DisabilitaUtente.vbs che, per ovvi motivi di deploy, dovrà risiedere in una share di rete, chiamiamola \\192.168.1.100\cartella_degli_script (se si dovesse copiare manualmente DisabilitaUtente su ogni PC, tanto vale farsi un giro ogni 180 giorni e disabilitare a mano ).
A questo punto, qualcuno vorrebbe sicuramente suggerire che è meno costoso passare da un workgroup ad un dominio con Active Directory, ma io dico che tutti insieme ce la facciamo in poco tempo ;)
Kisses,
Nat
ho una mezza idea per risolvere il requisito dell'Allegato B della 196/2003 "disabilitare gli account inattivi da più di 180 giorni", per cui datemi una mano che a qualcuno servirà
Partiamo dal seguente script, che disabilita un utente in un dominio, e che chiamerò "DisabilitaUtente.vbs":
Option Explicit
' Dichiarazione delle variabili in cui immagazzinare
' il nome utente, il dominio ed uno switch per lo script,
' oltre all'oggetto Utente.
Dim strNomeUtente, strDominio, blnDisabilita, objUtente
' Se lo script viene lanciato senza argomenti,
' o se viene richiesto l'help con l'usuale /?,
' viene lanciata la procedura "Help
If WScript.Arguments.Count < 1 Then Call Help
If WScript.Arguments(0) = "/?" Then Call Help
' Assegnazione degli argomenti alle variabili.
strNomeUtente = WScript.Arguments(0)
strDominio = WScript.Arguments(1)
blnDisabilita = WScript.Arguments(2)
' Recupera l'oggetto utente.
Set objUtente = GetObject("WinNT://" & strDominio & "/" & strNomeUtente & ",user")
' Imposta il valore della proprietà AccountDisabled, aggiorna le informazioni sull'utente,
' avvisa del completamento dell'esecuzione.
objUtente.AccountDisabled = blnDisabilita
objUtente.SetInfo
WScript.Echo "L'utente " & strNomeUtente & " è stato disabilitato."
Sub Help
WScript.Echo "Modo d'uso: disableuser nome_utente dominio true/false"
WScript.Echo "Questo script abilita/disabilita, in base al valore del terzo argomento, un account utente."
WScript.Echo "Il primo argomento è il nome utente."
WScript.Echo "Il secondo argomento è il nome del dominio."
WScript.Echo "Il terzo argomento è il valore assegnato ad AccountDisabled."
WScript.Echo "Gli argomenti devono essere separati da uno spazio vuoto."
WScript.Echo "Passare come terzo argomento True per disabilitare l'utente."
WScript.Echo "Passare come terzo argomento False per abilitarlo."
WScript.Quit
End Sub
Innanzitutto, occorre modificare l'istruzione
Set objUtente = GetObject("WinNT://" & strDominio & "/" & strNomeUtente & ",user")
per recuperare l'utente di un PC in un workgroup, non in un dominio: qualcuno sa come farlo?
In secondo luogo, occorre mettere in Esecuzione Automatica uno script, chiamiamolo VerificaLog.vbs, che verifica se dall'ultima volta che l'utente si è loggato sono passati più di 180 giorni: in tal caso, VerificaLog.vbs dovrebbe invocare l'esecuzione di DisabilitaUtente.vbs.
Abbiamo qui due ordini di problemi:
- scrivere VerificaLog.vbs
- richiamare DisabilitaUtente.vbs che, per ovvi motivi di deploy, dovrà risiedere in una share di rete, chiamiamola \\192.168.1.100\cartella_degli_script (se si dovesse copiare manualmente DisabilitaUtente su ogni PC, tanto vale farsi un giro ogni 180 giorni e disabilitare a mano ).
A questo punto, qualcuno vorrebbe sicuramente suggerire che è meno costoso passare da un workgroup ad un dominio con Active Directory, ma io dico che tutti insieme ce la facciamo in poco tempo ;)
Kisses,
Nat