Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
[PS] Creazione di un account sulla macchina locale
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
balubeto
Dio minore
Dio minore


Registrato: 19/05/06 09:22
Messaggi: 757

MessaggioInviato: 25 Set 2010 19:28    Oggetto: [PS] Creazione di un account sulla macchina locale Rispondi citando

CIAO

Ho creato questo script:

Codice:

# Creazione di un account sulla macchina locale.

Clear-Host

# Analizza i dati immessi da un utente.

do {

    # Prede i dati da un utente.

    $UserName    = Read-Host "Nome utente da creare"
    $FullName    = Read-Host "Nome completo utente"
    $Password    = Read-Host "Password utente" -AsSecureString
    $Password1   = Read-Host "Verifica password utente" -AsSecureString
    $GroupName   = Read-Host "Inserire il gruppo di appartenenza dell'utente"

    # Converte in chiaro le due password criptate.

    $Password  = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password))
    $Password1 = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password1))

    # Verifica che tutti i dati immessi siano corretti.
   
    if (
        # Verifica se il nome completo dell'utente e la sua password sono conformi.
        ($FullName -eq "") -or ($Password -eq "") -or ($Password -ne $Password1) -or
        # Controllo sull'esistenza del nome utente in una macchina locale.
        ((([adsi]"WinNT://$$env:computername,computer").children | ? {$_.psbase.schemaClassName -eq "User"} | Select -expand Name) -ccontains $UserName) -or
        # Controllo sulla validita' del nome utente.
        (($Username.length -lt 1) -or ($UserName -match '^\s|\s$|^(\.|\s)+$|.{21,}|[\\/"\[\]:\|<>\+=;,\?\*@]')) -or
        # Controllo sull'esistenza di un gruppo su una macchina locale.
        ((([adsi]"WinNT://$([Environment]::MachineName),computer").children | ? {$_.psbase.schemaClassName -eq "Group"} | Select -expand Name) -notcontains $GroupName)
        ) {
           Write-Host
           Write-Host "Immissione dati errata o nome utente '$UserName' gia' esistente o gruppo locale '$GroupName' non esistente. Prego, ripetere."
           Write-Host
    }
}
until (
      # Verifica se il nome completo dell'utente e la sua password sono conformi.
      ($FullName -ne "") -and ($Password -ne "") -and ($Password -eq $Password1) -and
      # Controllo sull'esistenza del nome utente in una macchina locale.
      ((([adsi]"WinNT://$$env:computername,computer").children | ? {$_.psbase.schemaClassName -eq "User"} | Select -expand Name) -cnotcontains $UserName) -and
      # Controllo sulla validita' del nome utente.
      (($Username.length -ge 1) -and ($UserName -notmatch '^\s|\s$|^(\.|\s)+$|.{21,}|[\\/"\[\]:\|<>\+=;,\?\*@]')) -and
      # Controllo sull'esistenza di un gruppo su una macchina locale.
      ((([adsi]"WinNT://$([Environment]::MachineName),computer").children | ? {$_.psbase.schemaClassName -eq "Group"} | Select -expand Name) -contains $GroupName)
      )

# Impostazione della password di un account utente che sta per essere creato.

( ([adsi] "WinNT://$env:computername").Create("User", $UserName) ).SetPassword($password)

# Impostazione del nome completo di un account utente che sta per essere creato.

( ([adsi] "WinNT://$env:computername").Create("User", $UserName) ).InvokeSet("FullName", $FullName)

# Addiziona un account utente, che sta per essere creato, al gruppo desiderato.

( [adsi] "WinNT://$env:computername/$GroupName,group" ).Add( ( ([adsi] "WinNT://$env:computername").Create("User", $UserName) ).AdsPath )

# Creazione di un account e salvataggio delle informazioni relative al suo profilo.
   
( ([adsi] "WinNT://$env:computername").Create("User", $UserName) ).SetInfo()


ma ottengo questo errore:

Codice:

Eccezione durante la chiamata di "Add" con "1" argomento/i: "Impossibile aggiun
gere o rimuovere un nuovo membro dal gruppo locale perché il membro non esiste.
"
In D:\Users\xxx\Documents\Creazione_account_locali.ps1:60 car:60
+ ( [adsi] "WinNT://$env:computername/$GroupName,group" ).Add <<<< ( ( ([adsi]
"WinNT://$env:computername").Create("User", $UserName) ).AdsPath )
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI


Come mai?

GRAZIE

CIAO
Top
Profilo Invia messaggio privato
balubeto
Dio minore
Dio minore


Registrato: 19/05/06 09:22
Messaggi: 757

MessaggioInviato: 26 Set 2010 10:10    Oggetto: Rispondi citando

Quindi, come si fa a creare un account facendo in modo che vada direttamente nel gruppo da me scelto?

GRAZIE

CIAO
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11806
Residenza: Tokelau

MessaggioInviato: 27 Set 2010 12:28    Oggetto: Rispondi

Al momento di aggiungerlo al gruppo, l'utente deve già esistere...
Top
Profilo Invia messaggio privato HomePage
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi