• 01/20/2021
  • 12 minuter att läsa
    • s
    • s
    • a
    • s
    • q
    • +1

kort beskrivning

jämförelseoperatörerna i PowerShell kan antingen jämföra två värden eller filterelementen i en samling med ett ingångsvärde.,

lång beskrivning

jämförelseoperatörer låter dig jämföra värden eller hitta värden som matchar specifika mönster.,nt

-innehåller samlingen innehåller ett värde -notcontains samlingen innehåller inte ett värde -i värdet är i en samling -notin värde är i en samling -notin

r inte i en samling typ -är båda objekten är av samma typ -isnot objekten är inte samma typ

vanliga funktioner

som standard är alla jämförelseoperatörer skiftlägeskänsliga., För att göra en jämförelseoperator skiftlägeskänslig, Lägg till enc efter-. Till exempel är -ceq dencase-känsliga versionen av -eq. Lägg till en i innan -för att göra fallokänsligheten explicit. Till exempel är -ieq den explicit fallinsensitiveversion av -eq.

När inmatningen av en operatör är ett skalärt värde returnerar operatören aBoolean-värde., När inmatningen är en samling returnerar operatören deelement i samlingen som matchar uttrycks högra värde.Om det inte finns några matcher i samlingen returnerar jämförelseoperatörer en tomyarray.,v>

Object0

det finns några undantag:

  • inneslutnings-och typoperatörerna returnerar alltid ett booleskt värde
  • -replace operatören returnerar ersättningsresultatet
  • -match och -notmatch -notmatch operatörerna fyller också$Matches Automaticvariable

jämlikhetsoperatörer

– EQ och-Ne

När vänster sida är skalär, -eq returnerar sant om högersidan är en exakt matchning, annars returnerar -eq falskt.-herr talman!, -negör motsatsen; det returnerar falskt när båda sidor matchar; annars-ne returnsTrue.

exempel:

När vänster sida är en samling,-eq returnerar de medlemmar som matcharhögersidan, medan-ne filtrerar bort dem.

exempel:

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

dessa operatörer behandlar alla delar av samlingen. Exempel:

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

jämställdhetsoperatörerna accepterar två objekt, inte bara en skalär eller samling.,Men jämförelseresultatet är inte garanterat att vara meningsfullt för slutanvändaren.Följande exempel visar problemet.

False

i det här exemplet skapade vi två objekt med identiska egenskaper. Ändå är likhetstestresultatet falskt eftersom de är olika objekt. För att skapajämförbara klasser måste du implementera systemet.IEquatable<T> I yourclass. Följande exempel visar det partiella genomförandet av amyfileinfoset klass som implementerar systemet.,IEquatable<T> och har tvåegenskaper, fil och storlek. MetodenEquals() returnerar sant om fil-och storleksegenskaperna för två myfileinfoset-objekt är desamma.

True

ett framträdande exempel på att jämföra godtyckliga objekt är att ta reda på om de är ogiltiga. Men om du behöver avgöra om en variabel är $nullmåste du sätta$null på vänster sida av jämlikhetsoperatören. Att sätta det på den högra sidan gör inte vad du förväntar dig.,

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 båda sidorna är scalarthey returnerar sant eller falskt beroende på hur de två sidorna jämför:

Operator returnerar sant när…,
-gt den vänstra sidan är större
-ge den vänstra sidan är större eller lika
-lt den vänstra sidan är mindre
-Le den vänstra sidan är mindre eller lika

i följande exempel returnerar alla uttalanden sant.

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

notera

på de flesta programmeringsspråk är den större än operatören>., InPowerShell, detta tecken används för omdirigering. För mer information, seabout_redirection.

När vänster sida är en samling jämför dessa operatörer varje medlem av samlingen med höger sida. Beroende på deras logik, antingen dehåll eller kassera medlemmen.

exempel:

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

dessa operatörer arbetar med alla klasser som implementerar systemet.Makalös.

exempel:

följande exempel visar att det inte finns någon symbol på en amerikansk QWERTYkeyboard som sorteras efter ”a”., Den matar en uppsättning som innehåller alla sådana symbolsto -gt operatör för att jämföra dem mot ’a’. Utgången är en tom array.

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

om operatörernas två sidor inte är rimligen jämförbara, rättar dessa operatörer ett icke-avslutande fel.

matchande operatörer

syntaxen är:

När inmatningen av dessa operatörer är ett skalärt värde returnerar de en Booleskvärde. När inmatningen är en samling värden returnerar operatörerna någonmatchande medlemmar. Om det inte finns några matcher i en samling återvänder operatörernaen tom array.,

-liknande och-intelik

-like och-notlike beter sig på samma sätt som-eq och-ne, men högersidan kan vara en sträng som innehåller jokertecken.

exempel:

-match och-notmatch

-match och-notmatch använd reguljära uttryck för att söka efter mönster ihändiga sidvärden. Reguljära uttryck kan matcha komplexa mönster somemail-adresser, UNC-sökvägar eller formaterade telefonnummer., Den högra sidosträngen måste följa de vanliga uttryckenregler.

Scalar exempel:

om inmatningen är en samling returnerar operatörerna matchande medlemmar i densamlingen.

Samlingsexempel:

-match och-notmatch stöder regex capture groups. Varje gång de körs skriver de automatiskt$Matches. När <input> är en samling är variabeln$Matches $null., $Matches är en Hashtable som alltid har akey heter ’0’, som lagrar hela matchen. Om den vanliga expressioneninnehåller fånga grupper innehåller $Matches ytterligare nycklar för varje grupp.

exempel:

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

Mer information finns i about_Regular_Expressions.

ersättningsoperatör

ersättning med reguljära uttryck

som-matchanvänder operatören-replace reguljära uttryck för att hitta detspecificerade mönstret., Men till skillnad från -match ersätter den matcherna med ett annat specifikt värde.

Syntax:

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

operatören ersätter hela eller delar av ett värde med det angivna värdet med hjälp avregelbundna uttryck. Du kan använda operatören för många administrativa uppgifter,till exempel byta namn på filer. Följande kommando ändrar till exempel filnamnstillägg för alla .txt-filer till .log:

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

som standard är operatören -replace skiftlägeskänslig., 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öljande exempel accepterar operatören-replace ett användarnamn i formofDomainName\Username och konverterar till formatet[email protected]:

[email protected]

Varning

$ tecken har Syntatiska roller i både PowerShell och regularexpressions:

  • i PowerShell, mellan dubbla citattecken, betecknar det variabler ochfakter som en subexpressionsoperatör.,
  • i Regex-söksträngar betecknar det slutet av raden
  • i Regex-substitutionssträngar betecknar det fångade grupper som sådana, vara sureto att antingen sätta dina reguljära uttryck mellan enstaka citattecken ellerinsert en backtick (`) tecken före dem.

till exempel:

$$I Regex betecknar en bokstavlig$. Detta$$ I substitutionssträngen toinclude a a literal$ I den resulterande ersättningen., Till exempel:

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

för att lära dig mer, se about_Regular_Expressions andSubstitutions i reguljära uttryck.

ersätta i en samling

När<input> till-replace operatören är en samling, PowerShellapplies ersättning till varje värde i samlingen. Till exempel:

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

ersättning med ett scriptblock

i PowerShell 6 och senare accepterar -replace operatören också ett scriptblock som utför ersättningen., Scriptblocket körs en gång för varje match.

Syntax:

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

använd$_ automatisk variabel för att komma åt inputtext som ersätts och annan användbar information. Denna variabels klasstyp ärsystem.Text.Regularexpressioner.Match.

följande exempel ersätter varje sekvens med tre siffror med teckenekvivalenterna. Scriptblocket körs för varje uppsättning av tre siffror som behöver varaspelade.,

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

inneslutningsoperatörer

inneslutningsoperatörerna (-contains, -notcontains, -in och ) liknar jämlikhetsoperatörerna, förutom att de alltid returnerar en booleanvalue, även när inmatningen är en samling. Dessa operatörer slutar att jämföra assoon när de upptäcker den första matchen, medan jämställdhetsoperatörerna utvärderar allinput-medlemmar. I en mycket stor samling återvänder dessa operatörer snabbare än jämställdhetsoperatörerna.,

Syntax:

-innehåller och-inteinnehåller

dessa operatörer berättar om en uppsättning innehåller ett visst element. -contains returnerar sant när den högra sidan (testobjektet) matchar ett av elementen i uppsättningen. -notcontains returnerar FALSKT istället. När testobjektet är en samling använder dessa operatörer referensjämlikhet, dvs. de kontrollerar om enav satsens element är samma instans av testobjektet.,

exempel:

mer komplexa exempel:

-in och-notin

-in och- notin operatörer introducerades i PowerShell 3 somsyntaktisk omvänd avcontains och-notcontain operatörer. -inreturnerar sant när den vänstra sidan<test-object> matchar en av elementen i uppsättningen. -notin returnerar FALSKT istället., När testobjektet är en uppsättning använder dessa operatörer referensjämlikhet för att kontrollera om ett av testets element är samma instans av testobjektet.

följande exempel gör samma sak som exemplen för -containoch -notcontaingör, men de är skrivna med -inoch -notin istället.

mer komplexa exempel:

typjämförelse

operatörerna för typjämförelse (-is och-isnot) används för att avgöra om anobject är en specifik typ.,

Syntax:

Written by 

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *