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

    [PS] Controllo sulla validita di un nome utente di Windows 7

    CIAO

    Lo script:

    codice:
    if( $UserName -notmatch "\W") {
       Write-Host "Username '$UserName' is valid"
    }
    Else {
       Write-Host "Username '$UserName' is invalid"
    }
    funziona ma, se un utente non inserisce alcun carattere, lo script scrive: "Username '' is valid" Come mai?

    Invece, questo script:

    codice:
    If ( (([adsi]("WinNT://[Environment]::MachineName,computer")).children | ? {$_.psbase.schemaClassName -eq "User"} | Select -expand Name) -contains $UserName) {
        Write-host "$UserName exists"
    }
    else {
        Write-host "$UserName not exists"
    }
    non funziona poiche mi scrive sempre che l'utente inserito non esiste. 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
    Ho notato che lo script:

    codice:
    $UserName   = Read-Host "Controllo sulla validita' del nome utente"
    
    if ( $UserName -match "^\w{1,19}$" )     #Please note the lowercase w, means: 1 to 19 characters of the character class [a-zA-Z0-9_]
    {
     Write-Host -Foreground green "Username '$UserName' is valid"    #Now we take the valid case in the IF clause because it is easier to write 
    }
    else
    {
     Write-Host -Foreground red "Username '$UserName' is invalid"    # and the invalid case in the ELSE clause
    }
    mi scrive "Username $UserName is invalid" anche quando scrivo un nome che contiene degli spazi. 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.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    166
    In Windows 7, i simboli che non possono essere usati nei nomi degli utenti sono solo /\[]":;<>+=,?*

    Se cio` e' vero, come faccio a controllare se un nome di un utente contiene tutti i simboli permessi da Windows 7 (multilingua) eccetto i simboli indicati sopra?

    GRAZIE

    CIAO
    Balubeto

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

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    166
    Ho creato questo script

    codice:
    $UserName  = Read-Host "Checking the validity of the username"
    
    if ( $UserName -match "^\w[\w\s]{0,17}\w$" )
    {
     Write-Host -Foreground green "Username '$UserName' is valid" 
    }
    else
    {
     Write-Host -Foreground red "Username '$UserName' is invalid"
    }
    ma mi scrive che il nome dell'utente non e valido anche se questo nome e` composto da un solo numero (come "8" o "6") o se esiste il simbolo "-" fra i simboli accettabili. Quindi, come devo fare a risolvere questo problema?

    GRAZIE

    CIAO
    Balubeto

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    166
    L'espressione "^[\w+\p{L}\s-]{1,17}$" funziona bene ma, purtroppo, convalida anche i nomi degli utenti che incominciano o finiscono con degli spazi. Quindi, come potrei risolvere questo problema?

    In Windows 7, qual'e' la lunghezza massima per i nomi degli utenti?

    GRAZIE

    CIAO
    Balubeto

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

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    166
    Ho scritto questo script:

    codice:
    $UserName = Read-Host "Controllo sulla validita` di un nome utente"
    
    if (($username.length -ge 1) -and -not(([regex]::isMatch($username,'^\s|\s$|^(\.|\s)+$|.{21,}|[\\/"\[\]:\|<>\+=;,\?\*@]')))) {
     Write-Host "Username '$UserName' is valid"
    }
    else {
     Write-Host "Username '$UserName' is invalid"
    }
    con questa espressione ^\s|\s$|^(\.|\s)+$|.{21,}|[\\/"\[\]:\|<>\+=;,\?\*@] che convalida anche i nomi degli utenti contenenti anche

    numeri, caratteri accentati e tutti i simboli validi.

    L`unico problema e` che vorrei eliminare almeno l`operatore -not in modo da rendere la condizione piu` snella ma non so come fare. Qualcuno ha qualche idea?

    GRAZIE

    CIAO
    Balubeto

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    166
    Credo di avere trovato una soluzione piu` elegante o esiste un'altra soluzione ancora migliore di questa:

    codice:
    $UserName = Read-Host "Checking the validity of the username"
    
    if ( ($username.length -ge 1) -and ($UserName -notmatch '^\s|\s$|^(\.|\s)+$|.{21,}|[\\/"\[\]:\|<>\+=;,\?\*@]') ) {
     Write-Host "Username '$UserName' is valid"
    }
    else {
     Write-Host "Username '$UserName' is invalid"
    }
    Per caso, qualcuno vede qualche bug in questo script?

    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.