Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    166

    [PS] Creazione di un account sulla macchina locale

    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
    Balubeto

    Su Facebook, e` nato il gruppo SoftHard per tutti http://www.facebook.com/group.php?gid=52641062213&ref=nf . Vi aspetto.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    166
    Quindi, come si fa a creare un account facendo in modo che vada direttamente nel gruppo da me scelto?

    GRAZIE

    CIAO
    Balubeto

    Su Facebook, e` nato il gruppo SoftHard per tutti http://www.facebook.com/group.php?gid=52641062213&ref=nf . Vi aspetto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.