• 01/20/2021
  • 12 minutter på at læse
    • S
    • s
    • en
    • s
    • q
    • +1

en Kort beskrivelse

Sammenligningen erhvervsdrivende i PowerShell kan enten sammenligne to værdier eller filterelements af en samling mod et input værdi.,

Lang beskrivelse

sammenligningsoperatører giver dig mulighed for at sammenligne værdier eller finde værdier, der matcher specificerede mønstre.,nt

-indeholder samling indeholder en værdi -notcontains samling indeholder ikke en værdi -i værdi er i en samling -notin værdi er ikke i en samling Type -eller begge dele er af samme type -erikke de objekter, der er ikke den samme type

Fælles funktioner

Som standard, alle sammenligning aktører er store og små bogstaver., For at lave en sammenligningoperator case-sensitive, Tilføj en c efter -. For eksempel er -ceq den casefølsomme version af -eq. For at gøre case-ufølsomheden eksplicit skal du tilføje en i før -. For eksempel er -ieq den eksplicit case-insensitiveversion af -eq.

når indtastningen af en operatør er en skalær værdi, returnerer operatøren aBoolean værdi., Når indgangen er en samling, returnerer operatørenelementer i samlingen, der matcher den højre værdi af udtrykket.Hvis der ikke er kampe i samlingen, returnerer sammenligningsoperatører en tomtarray.,v>

Object0

Der er et par undtagelser:

  • inddæmning og type erhvervsdrivende altid returnere en Boolean værdi
  • -replace operatør returnerer udskiftning resultat
  • -match og -notmatch operatører, der også befolker $Matches automaticvariable

Ligestilling operatører

-eq og -ne

Når den venstre side er skalar, -eq returnerer True, hvis den rigtige-handside er et eksakt match, ellers -eq returnerer False., -ne gør det modsatte; det returnerer FALSK, når begge sider matcher; ellers-ne returnsTrue.

Eksempel:

Når den venstre side er en samling, -eq returnerer de medlemmer, der matchthe højre side, mens -ne filtre dem ud.

eksempel:

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

disse operatører behandler alle elementer i samlingen. Eksempel:

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

ligestillingsoperatørerne accepterer to objekter, ikke kun en skalar eller samling.,Men sammenligningsresultatet garanteres ikke at være meningsfuldt for slutbrugeren.Følgende eksempel viser problemet.

False

i dette eksempel oprettede vi to objekter med identiske egenskaber. Alligevel erkvalitetstestresultatet falsk, fordi de er forskellige objekter. At oprettekomparable klasser, skal du implementere systemet.IEquatable<T> i yourclass. Følgende eksempel viser den delvise gennemførelse af amyfileinfoset klasse, der implementerer systemet.,IEquatable<T> og har twoproperties, Fil og Størrelse. Metoden Equals() returnerer True, hvis File og Si .e egenskaber for to MyFileInfoSet objekter er de samme.

True

et fremtrædende eksempel på sammenligning af vilkårlige objekter er at finde ud af, om de er fulde. Men hvis du har brug for at afgøre, om en variabel er $null, skal du sætte$null på venstre side af ligestilling operatør. At sætte det påhøjre side gør ikke, hvad du forventer.,

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 skalære, returnerer de sande eller falske, afhængigt af hvordan de to sider sammenligner:

operatør returnerer sandt, når…,
-gt i venstre side er større
-ge i venstre side er større end eller lig med
-lt i venstre side er mindre
-le i venstre side er mindre eller lig med

I de følgende eksempler, alle udsagn return True.

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

Bemærk!

I de fleste programmeringssprog større end operatør >., Inpo .ershell, denne karakter bruges til omdirigering. For detaljer, seeabout_Redirection.

når venstre side er en samling, sammenligner disse operatører hvert medlem af samlingen med højre side. Afhængigt af deres logik, de entenhold eller Kass ther medlemmet.

eksempel:

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

disse operatører arbejder med enhver klasse, der implementerer systemet.Jeg kan sammenlignes.

eksempler:

følgende eksempel viser, at der ikke er noget symbol på et Amerikanskboard .ertykeyboard, der bliver sorteret efter ‘a’., Det føder et sæt, der indeholder alle sådanne symbolertil -gt operatøren for at sammenligne dem med ‘a’. Udgangen er en tom Matri..

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

Hvis operatørernes to sider ikke med rimelighed kan sammenlignes, viser disse operatørerenafslutningsfejl.

matchende operatører

syntaksen er:

når input fra disse operatører er en skalær værdi, returnerer de en Booleanvalue. Når input er en samling af værdier, operatørerne returnere anymatching medlemmer. Hvis der ikke er kampe i en samling, returnerer operatørerneet tomt array.,

-lide-og -notlike

-like og -notlike opfører sig på samme måde som -eq og -ne, men højre-handside kunne være en streng, der indeholder jokertegn.

Eksempel:

-match og -notmatch

-match og -notmatch bruge regulære udtryk til at søge efter mønstre i theleft-side værdier. Regulære udtryk kan matche komplekse mønstre som e-mail-adresser, UNC-stier eller formaterede telefonnumre., Den højre sidestring skal overholde de regelmæssige udtrykregler.

Skalareksempler:

Hvis input er en samling, returnerer operatørerne de matchende medlemmer af thatcollection.

Samling eksempler:

-match og -notmatch understøtter regex fange grupper. Hver gang de kører, deoverskrive $Matches automatisk variabel. Når <input> er en samling, er variablen$Matches $null., $Matches er en Hashtabel, der altid har akey ved navn’ 0′, som gemmer hele kampen. Hvis det almindelige udtrykindeholder capture grupper, $Matches indeholder yderligere nøgler til hvergruppe.

Eksempel:

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

For detaljer, se about_Regular_Expressions.

Udskiftning operatør

Erstatning med regulære udtryk

Som -match -replace operatøren bruger regulære udtryk til at finde thespecified mønster., Men i modsætning til -match, erstatter den kampene med en andenspecificeret værdi.

syntaks:

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

operatøren erstatter hele eller en del af en værdi med den angivne værdi ved hjælp afregelmæssige udtryk. Du kan bruge operatøren til mange administrative opgaver,såsom omdøbning af filer. For eksempel følgende kommando ændrer filnavnet udvidelser af alle .txt filer .log:

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

Som standard -replace operatøren er store og små bogstaver., 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 det følgende eksempel, -replace operatøren accepterer et brugernavn 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, mellem dobbelte anførselstegn, er det udpeger variabler andacts som en underudtryk operatør.,
  • I Regex søgestrenge, det betegner slutningen af den linje
  • I Regex substitution strenge, det betegner fanget grupper Som sådan, være sureto til enten at sætte dit regulære udtryk mellem enkelte anførselstegn orinsert en backtick (`) karakter for dem.

For eksempel:

$$ i Regex betegner en bogstavelig $. Denne $$ i substitution string toinclude en bogstavelig $ i den efterfølgende udskiftning., For eksempel:

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

til At lære mere, se about_Regular_Expressions andSubstitutions i Regulære Udtryk.

Erstatte i en samling

Når <input> til -replace operatør er en samling, PowerShellapplies udskiftning til hver værdi i samlingen. For eksempel:

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

Udskiftning med et script blokken

I PowerShell 6 og senere -replace operatøren accepterer også et script blockthat udfører udskiftning., Scriptblokken kører en gang for hver kamp.

Syntax:

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

Inden script blok, skal du bruge $_ automatisk variabel til at få adgang til inputtext blevet erstattet, og andre nyttige oplysninger. Denne variabels klasse type ersystem.Tekst.Regulære indtryk.Matche.

følgende eksempel erstatter hver sekvens af tre cifre med tegnækvivalenter. Scriptblokken kører for hvert sæt af tre cifre, der skal væreplaceret.,

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

Inddæmning operatører

indeslutning operatører (-contains -notcontains -in og -notin) aresimilar til ligestilling operatører, bortset fra, at de altid vende tilbage en Booleanvalue, selv når indgangen er en samling. Disse operatører holder op med at sammenligne assoon, da de opdager den første kamp, mens ligestillingsoperatørerne vurderer allinput-medlemmer. I en meget stor samling vender disse operatører hurtigere endligheds operatørerne.,

syntaks:

-indeholder og-ikkeindeholder

disse operatører fortæller, om et sæt indeholder et bestemt element. -containsreturnerer True, når den højre side (testobjekt) matcher et af elementerne i sættet. -notcontains returnerer FALSK i stedet. Når testobjektet er en samling, bruger disse operatører referencekvalitet, dvs. de kontrollerer, om en af sætets elementer er den samme forekomst af testobjektet.,

Eksempler:

Mere komplekse eksempler:

-i og -notin

-in og –notin operatører, der blev indført i PowerShell 3 som thesyntactic omvendt af den af contains og -notcontain operatører. -inreturnerer True, når venstre side <test-object> matcher et af elementerne i sættet. -notin returnerer FALSK i stedet., Når testobjektet er et sæt, bruger disse operatører referencekvalitet til at kontrollere, om et af disse elementer er den samme forekomst af testobjektet.

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

Mere komplekse eksempler:

Type sammenligning

Den type sammenligning erhvervsdrivende (-is og -isnot) bruges til at afgøre, om anobject er en bestemt type.,

syntaks:

Written by 

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *