2013-04-28 21 views
22

Come testare se il numero di caratteri in $ dbUserName è più di otto caratteri?Come posso verificare che una variabile abbia più di otto caratteri in PowerShell?

Non riesco a individuare un comando o una serie di comandi che consentiranno di eseguire questa operazione. Sono stato solo in grado di trovare se la variabile è nullo:

if ($dbUserName) { 
    Write-Output " You left Username blank" 
    $dbUserName = read-host 
} 

Ma vorrei prossimo test come questo:

if ($dbUserName [String] > 8) } 
    Write-Output " Please enter more than 8 characters " 
    $dbUserName=read-host " Re-enter database user name" 
} 
+2

Strano, nessuno ha preso la logica in questo codice. Stai controllando se la lunghezza del nome utente è maggiore di 8, e su True, stai chiedendo loro di inserire più caratteri. Quindi, se la lunghezza è inferiore o uguale a 8, sarà accettata. Penso che dovrebbe essere -lt o -le ... –

risposta

45

Utilizzare la length proprietà del tipo [String]:

if ($dbUserName.length -gt 8) { 
    Write-Output "Please enter more than 8 characters." 
    $dbUserName = Read-Host "Re-enter database username" 
} 

Si prega di notare che è necessario utilizzare -gt anziché > nella condizione if. PowerShell utilizza i seguenti operatori di confronto per confrontare valori e condizioni di prova:

  • eq = uguale
  • -ne = non uguale
  • -lt = meno
  • -gt = maggiore
  • -le = minore o uguale
  • -ge = maggiore o uguale
+1

> è l'operatore di reindirizzamento. Sospetto che potrebbe essere una scelta migliore. – mjolinor

+0

@mjolinor Sì, è corretto. Pericoli di lavorare con più lingue. :) –

+0

La logica di questo post è ancora viziata. Se il nome utente ha una lunghezza superiore a 8 caratteri, l'output è: inserire più di 8 caratteri? Dovrebbe essere -lt – LPChip

0

Puoi anche usare -match contro un'espressione regolare. Es:

if ($dbUserName -match ".{8}") 
{ 
    Write-Output " Please enter more than 8 characters " 
    $dbUserName=read-host " Re-enter database user name" 
} 

Anche se siete come me e come la tua parentesi graffe di essere nella stessa posizione orizzontale per i vostri blocchi di codice, si può mettere che su una nuova linea, dal momento che è in attesa di un blocco di codice lo farà guarda la riga successiva. In alcuni comandi in cui la prima parentesi graffa deve essere in linea con il comando, è possibile utilizzare un marcatore di accento grave (`) per dire a PowerShell di trattare la riga successiva come una continuazione.

Problemi correlati