2013-08-12 11 views
12

Ho linee -PowerShell Select-String -notmatch -pattern

echo $LocalAdmins 
    Administrator 
    Domain-Administrator 
    daemon 
    SomeUser 
  • Linea 1-3 dovrebbe essere lo stesso, anche se ci potrebbero essere situazioni in cui Domain-amministratore non esiste linee in modo semplice conteggio non sarà aiuto perché l'utente potrebbe nascondersi in 3a linea.

  • Modifica riga 4, potrebbero esserci più di 4 linee come e nessuna linea 4.

  • Non sono ancora sicuro se le linee cambiano la loro posizione o no.

Ho bisogno di ottenere una stringa che sia -notMatch "Amministratore", "Dominio-Amministratore", "demone". Io, ho bisogno di nomi utente che sono in questa lista.

C'è un modo per utilizzare più di un -notMatch con -and o()? Attualmente sono bloccato con il codice che utilizza solo un -notMatch. E non posso usare -Match perché potrebbero esserci più di 2 utenti nella lista.

$LocalAdmins | Select-String -pattern "Administrator" -notMatch 

risposta

16

Ti piace?

$LocalAdmins | select-string -Pattern 'Administrator|daemon' -NotMatch | select -expa line 

-pattern accetta REGEX. È possibile utilizzare | (o regex operator) per aggiungere altre parole per soddisfare le proprie esigenze.

+0

Questo funziona anche. Grazie! – Phoneutria

+0

@Phoneutria Felice di aiutare! –

2

Supponendo che $LocalAdmins è un array si potrebbe fare questo:

$exclude = 'Administrator', 'Domain-Administrator', 'daemon' 
$LocalAdmins | Where-Object { $exclude -notcontains $_ } 
+0

Grazie! Ha funzionato perfettamente. – Phoneutria