• 01/20/2021
  • 12 minutter på å lese
    • S
    • s
    • en
    • s
    • q
    • +1

Kort beskrivelse

Sammenligning operatører i PowerShell kan enten sammenligne to verdier eller filterelements av en samling mot en input-verdi.,

Lang beskrivelse

Sammenligningen operatører lar deg sammenligne verdier, eller å finne verdier som matchspecified mønstre.,nt

-inneholder samlingen inneholder en verdi -notcontains samling inneholder ikke en verdi i verdi i en samling -notin verdi er ikke i en samling Type er begge objektene er samme type -isnot gjenstandene er ikke den samme type

Vanlige funksjoner

som standard, alle sammenligningen operatører er små bokstaver., For å gjøre en comparisonoperator mellom store og små bokstaver, legge til en c etter -. For eksempel, -ceq er thecase-sensitive versjon av -eq. For å gjøre saken-insensitivitet eksplisitt,legge til en i før -. For eksempel, -ieq er eksplisitt case-insensitiveversion av -eq.

Når input av en operatør er en skalar verdi, operatør returnerer aBoolean verdi., Når input er en samling operatøren returnerer theelements av samlingen som samsvarer med høyre hånd verdien av uttrykket.Hvis det ikke er noen treff i samlingen, sammenligningen operatører returnere en emptyarray.,v>

Object0

Det er et par unntak:

  • oppsamling og type operatører alltid returnerer en Boolsk verdi
  • -replace operatør gir erstatning resultat
  • -match og -notmatch operatører også fylle $Matches automaticvariable

Likestilling operatører

-eq-og -ne

Når venstre side er en skalar, -eq returnerer True hvis den høyre-handside er en eksakt match, ellers, -eq returnerer den False., -ne gjør theopposite; den returnerer False når begge sider match, ellers, -ne returnsTrue.

Eksempel:

Når venstre side er en samling, -eq returnerer de medlemmer som matchthe høyre side, mens -ne filtre dem ut.

Eksempel:

1,2,3 -eq 2 # Output: 2"abc", "def" -eq "abc" # Output: abc"abc", "def" -ne "abc" # Output: def

Disse operatorene behandle alle elementene i samlingen. Eksempel:

"zzz", "def", "zzz" -eq "zzz"
zzzzzz

likestillings-operatører godta to objekter, ikke bare en skalar eller samling.,Men sammenligningen resultatet er ikke garantert å være meningsfull for sluttbrukeren.Følgende eksempel viser problemet.

False

I dette eksempelet har vi opprettet to objekter med identiske egenskaper. Likevel, theequality testresultatet er Usant, fordi de er forskjellige objekter. For å createcomparable klasser, du trenger for å implementere Systemet.IEquatable<T> i yourclass. Følgende eksempel viser en delvis implementering av aMyFileInfoSet klasse som implementerer Systemet.,IEquatable<T> og har twoproperties, Filnavn og Størrelse. Equals() metoden returnerer True hvis theFile Størrelse og egenskaper av to MyFileInfoSet objekter er de samme.

True

Et fremtredende eksempel på sammenligning av tilfeldige gjenstander er å finne ut om de arenull. Men hvis du trenger for å avgjøre om en variabel er $null, må du sette$null på venstre side av likestilling operatør. Å sette den på theright side ikke gjør hva du kan forvente.,

For example, let $a be an array containing null elements:

$a = 1, 2, $null, 4, $null, 6

The following tests that $a is not null.

$null -ne $a
False

The following, however, filers out all null elements from $a:

$a -ne $null # Output: 1, 2, 4, 6
1246

-gt, -ge, -lt, and -le

-gt, -ge, -lt, and -le behave very similarly., Når begge sider er scalarthey returnere True eller False avhengig av hvordan de to sidene sammenligne:

– Operator Returnerer Sant da…,
-gt venstre side er større
-ge venstre side er større eller lik
-lt venstre side er mindre
-le venstre side er mindre eller lik

I de følgende eksemplene, alle uttalelser returnere True.

8 -gt 6 # Output: True8 -ge 8 # Output: True6 -lt 8 # Output: True8 -le 8 # Output: True

Merk

I de fleste programmeringsspråk større-enn-operatoren er >., InPowerShell, dette tegnet brukes for omadressering. For mer informasjon, seeabout_Redirection.

Når venstre side er en samling disse operatørene sammenligne hvert medlem ofthe samling med høyre side. Avhengig av deres logikk, de eitherkeep eller forkaste medlem.

Eksempel:

Test collection:56789Members greater than 789Members greater than or equal to 7789Members smaller than 756Members smaller than or equal to 7567

Disse operatorene arbeide med en klasse som implementerer Systemet.IComparable.

Eksempel:

følgende eksempel viser at det er ingen symbol på en Amerikansk QWERTYkeyboard som blir sortert etter ‘a’., Det trekkes et sett som inneholder alle slike symbolsto -gt – operatoren til å sammenligne dem mot ‘a’. Output er en tom tabell.

$a=' ','`','~','!','@','#','$','%','^','&','*','(',')','_','+','-','=', '{','}','',':',';','"','''','\','|','/','?','.','>',',','<'$a -gt 'a'# Output: Nothing

Hvis to sider av operatører er ikke rimelig sammenlignbare, er disse operatorsraise et ikke-terminerende feil.

Matchende operatører

syntaksen er:

Når input av disse operatørene er en skalar verdi, de kommer tilbake en Booleanvalue. Når input er en samling av verdier, operatører tilbake anymatching medlemmer. Hvis det ikke er noen treff i en samling, operatører returnan tom tabell.,

-som og -notlike

-like og -notlike oppføre seg på samme måte til -eq og -ne, men høyre-handside kan være en streng som inneholder jokertegn.

Eksempel:

-kamp-og -notmatch

-match og -notmatch bruker vanlig uttrykk å søke etter mønster i theleft-side-verdier. Regulære uttrykk kan matche komplekse mønstre likeemail adresser, UNC stier, eller formatert telefonnumre., Høyre sidestring må forholde seg til den vanlige expressionsrules.

Skalar eksempler:

Hvis input er en samling operatører tilbake matchende medlemmer av thatcollection.

Samling eksempler:

-match og -notmatch støtte regex fange grupper. Hver gang de kjører, theyoverwrite $Matches automatisk variabel. Når <input> er en samling$Matches variabel $null., $Matches er en Hashtable som alltid har akey heter ‘0’, som lagrer hele kampen. Hvis den vanlige expressioncontains fange grupper, $Matches inneholder flere nøkler for eachgroup.

Eksempel:

TrueName Value---- -----domain CONTOSOuser jsmith0 was CONTOSO\jsmithDomain name:CONTOSOUser name:jsmith

For mer informasjon, se about_Regular_Expressions.

Erstatning operatør

Erstatning med regulære uttrykk

Som -match, -replace operatør bruker regulære uttrykk for å finne thespecified mønster., Men i motsetning til -match, erstatter dette samsvarer med anotherspecified verdi.

Syntaks:

<input> -replace <regular-expression>, <substitute>

operatør erstatter hele eller deler av verdien med den angitte verdien usingregular uttrykk. Du kan bruke operatør for mange administrative oppgaver,for eksempel endre navn på filer. For eksempel, følgende kommando endrer filnavn utvidelser av alle .txt filer til .log:

Get-ChildItem *.txt | Rename-Item -NewName { $_.name -replace '\.txt$','.log' }

standard -replace operatør er små bokstaver., To make it casesensitive, use -creplace. To make it explicitly case-insensitive, use-ireplace.

Examples:

"book" -ireplace "B", "C" # Case insensitive"book" -creplace "B", "C" # Case-sensitive; hence, nothing to replace
Cookbook

Regular expressions substitutions

It is also possible to use regular expressions to dynamically replace textusing capturing groups, and substitutions. Capture groups can be referenced inthe <substitute> string using the dollar sign ($) character before thegroup identifier.,

I følgende eksempel -replace operatør aksepterer brukernavn i formof DomainName\Username og konverterer til [email protected] format:

[email protected]

Advarsel

$ karakter har syntatic roller i både PowerShell og regularexpressions:

  • I PowerShell, mellom doble anførselstegn, angir variabler andacts som en subexpression operatør.,
  • I Regex søkestrenger, det betegner slutten av linjen
  • I Regex substitusjon strenger, det betyr tatt grupper Som sådan, være sureto å enten sette din vanlige uttrykk mellom enkle anførselstegn orinsert en backtick (`) tegn før dem.

For eksempel slik:

$$ i Regex betegner en bokstavelig $. Denne $$ i erstatning string toinclude en bokstavelig $ i den resulterende erstatning., For eksempel:

'5.72' -replace '(.+)', '$ $1' # Output: $ 5.72'5.72' -replace '(.+)', '$$$1' # Output: $5.72'5.72' -replace '(.+)', '$$1' # Output: $1

for Å lære mer, kan du se about_Regular_Expressions andSubstitutions i Regulære Uttrykk.

Erstatte i en samling

Ved <input> til -replace operatør er en samling, PowerShellapplies erstatning til hver verdi i samlingen. For eksempel:

"B1","B2","B3","B4","B5" -replace "B", 'a'a1a2a3a4a5

Erstatning med et skript blokk

I PowerShell, 6 og nyere, -replace operatør aksepterer også et skript blockthat utfører utskifting., Skriptet blokkere kjøres én gang for hver kamp.

Syntaks:

<String> -replace <regular-expression>, {<Script-block>}

inne I skriptet blokk, bruk $_ automatisk variabel for å få tilgang til inputtext blir erstattet og annen nyttig informasjon. Denne variabelen er klasse type isSystem.Tekst.RegularExpressions.Kamp.

følgende eksempel erstatter hver sekvens på tre sifre med characterequivalents. Skriptet blokkere går for hvert sett av tre sifre som må bereplaced.,

"072101108108111" -replace "\d{3}", {return $_.Value}
Hello

Forurensning operatører

oppsamling operatører (-contains, -notcontains, -in, og -notin) aresimilar til likestilling operatører, bortsett fra at de alltid kommer tilbake en Booleanvalue, selv når input er en samling. Disse operatorene slutte å sammenligne assoon som de oppdager den første kampen, mens likestilling operatører vurdere allinput medlemmer. I en meget stor samling, disse operatorene tilbake raskere thanthe likestilling operatører.,

Syntaks:

-inneholder og -notcontains

Disse operatorene kan fortelle om et sett som inneholder en bestemt element. -containsreturnerer True når høyre side (test objekt) samsvarer med en av de elementsin settet. -notcontains returnerer False i stedet. Når testen objektet er acollection, disse operatørene bruker referanse likestilling, dvs. de sjekker om oneof settet er elementer er den samme forekomst av testen objekt.,

Eksempel:

Mer komplekse eksempler:

-i og -notin

-in og –notin operatørene ble innført i PowerShell 3 som thesyntactic omvendt av contains og -notcontain operatører. -inreturnerer True hvis den venstre side <test-object> samsvarer med ett av theelements i settet. -notin returnerer False i stedet., Når testen objectis et sett, disse operatørene bruker referanse likestilling for å sjekke om en av theset er elementer er den samme forekomst av testen objekt.

følgende eksempler gjøre det samme som eksempler for -containog -notcontain gjøre, men de er skrevet med -in og -notin i stedet.

Mer komplekse eksempler:

Skriv sammenligning

Den type sammenligningen operatører (-is og -isnot) er brukt for å finne ut om anobject er en bestemt type.,

Syntaks:

Written by 

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *