about_Operators
Korte beschrijving
Beschrijft de operators die worden ondersteund door PowerShell.
Lange beschrijving
Een operator is een taalelement dat u kunt gebruiken in een opdracht of expressie. PowerShell ondersteunt verschillende typen operators om u te helpen waarden te bewerken.
Rekenkundige operators
Gebruik rekenkundige operatoren (+, -, *, /, ) %om waarden in een opdracht of expressie te berekenen. Met deze operatoren kunt u waarden optellen, aftrekken, vermenigvuldigen of delen en de rest (modulus) van een delingsbewerking berekenen.
De operator voor optellen voegt elementen samen. De vermenigvuldigingsoperator retourneert het opgegeven aantal exemplaren van elk element. U kunt rekenkundige operatoren gebruiken op elk .NET-type dat deze implementeert, zoals: Int, String, DateTime, en Hashtablematrices.
Bitwise operators (-band, -bor, -bxor, -bnot, , -shl) -shrmanipuleren de bitpatronen in waarden.
Zie about_Arithmetic_Operators voor meer informatie.
Toewijzingsoperatoren
Gebruik toewijzingsoperatoren (=, +=, *=-=, , /=) %=om waarden toe te wijzen, te wijzigen of toe te voegen aan variabelen. U kunt rekenkundige operatoren combineren met toewijzing om het resultaat van de rekenkundige bewerking toe te wijzen aan een variabele.
Zie about_Assignment_Operators voor meer informatie.
Vergelijkingsoperators
Gebruik vergelijkingsoperatoren (-eq, -ne, -gt-lt, , , -le) -geom waarden en testvoorwaarden te vergelijken. U kunt bijvoorbeeld twee tekenreekswaarden vergelijken om te bepalen of ze gelijk zijn.
De vergelijkingsoperatoren bevatten ook operators die patronen in tekst zoeken of vervangen. De operators (, , ) gebruiken reguliere expressies en (-like, -notlike) maken gebruik van jokertekens*. -replace-notmatch-match
Insluitingsvergelijkingsoperators bepalen of een testwaarde wordt weergegeven in een referentieset (-in, -notin, -contains). -notcontains
Typevergelijkingsoperatoren (-is, -isnot) bepalen of een object van een bepaald type is.
Zie about_Comparison_Operators voor meer informatie.
Logische operators
Gebruik logische operators (-and, -or-xor, , -not) !om voorwaardelijke instructies te verbinden met één complexe voorwaarde. U kunt bijvoorbeeld een logische -and operator gebruiken om een objectfilter met twee verschillende voorwaarden te maken.
Zie about_Logical_Operators voor meer informatie.
Omleidingsoperators
Gebruik omleidingsoperators (>, >>, 2>en 2>&12>>) om de uitvoer van een opdracht of expressie naar een tekstbestand te verzenden. De omleidingsoperators werken net als de Out-File cmdlet (zonder parameters), maar u kunt ook foutuitvoer omleiden naar opgegeven bestanden. U kunt de Tee-Object cmdlet ook gebruiken om uitvoer om te leiden.
Zie about_Redirection voor meer informatie
Operators splitsen en samenvoegen
De -split subtekenreeksen en -join operatoren delen en combineren. De -split operator splitst een tekenreeks in subtekenreeksen. De -join operator voegt meerdere tekenreeksen samen in één tekenreeks.
Zie about_Split en about_Join voor meer informatie.
Typeoperators
Gebruik de typeoperators (-is, -isnot, -as) om het .NET Framework type van een object te zoeken of te wijzigen.
Zie about_Type_Operators voor meer informatie.
Unaire operators
Gebruik de unaire ++ en -- operators om waarden te verhogen of te verlagen en - voor negatie. Als u bijvoorbeeld de variabele $a wilt verhogen van 9 naar 10, typt $a++u .
Zie about_Arithmetic_Operators voor meer informatie.
Speciale operators
Speciale operators hebben specifieke use-cases die niet in een andere operatorgroep passen. Met speciale operators kunt u bijvoorbeeld opdrachten uitvoeren, het gegevenstype van een waarde wijzigen of elementen ophalen uit een matrix.
Groeperingsoperator ( )
Net als in andere talen wordt (...) de prioriteit van operatoren in expressies overschreven. Bijvoorbeeld: (1 + 2) / 3
In PowerShell zijn er echter aanvullende gedragingen.
(...)hiermee kunt u uitvoer van een opdracht laten deelnemen aan een expressie. Bijvoorbeeld:PS> (Get-Item *.txt).Count -gt 10 TrueWanneer deze wordt gebruikt als het eerste segment van een pijplijn, wordt bij het verpakken van een opdracht of expressie tussen haakjes de opsomming van het expressieresultaat altijd veroorzaakt. Als de haakjes een opdracht verpakken, wordt deze uitgevoerd tot voltooiing met alle uitvoer die in het geheugen wordt verzameld voordat de resultaten via de pijplijn worden verzonden.
Notitie
Als u een opdracht tussen haakjes verpakt, wordt de automatische variabele $? ingesteld $trueop , zelfs wanneer de ingesloten opdracht zelf is ingesteld $?$falseop .
Levert bijvoorbeeld (Get-Item /Nosuch); $? onverwacht Waar op. Zie about_Automatic_Variables voor meer informatie over$?.
Subexpressieoperator $( )
Retourneert het resultaat van een of meer instructies. Retourneert voor één resultaat een scalaire waarde. Retourneert een matrix voor meerdere resultaten. Gebruik deze optie als u een expressie in een andere expressie wilt gebruiken. Als u bijvoorbeeld de resultaten van de opdracht wilt insluiten in een tekenreeksexpressie.
PS> "Today is $(Get-Date)"
Today is 12/02/2019 13:15:20
PS> "Folder list: $((dir c:\ -dir).Name -join ', ')"
Folder list: Program Files, Program Files (x86), Users, Windows
Operator voor matrixsubexpressie @( )
Retourneert het resultaat van een of meer instructies als een matrix. Het resultaat is altijd een matrix van 0 of meer objecten.
PS> $list = @(Get-Process | Select-Object -First 10; Get-Service | Select-Object -First 10 )
PS> $list.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
PS> $list.Count
20
PS> $list = @(Get-Service | Where-Object Status -eq Starting )
PS> $list.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
PS> $list.Count
0
Letterlijke syntaxis van hashtabel @{}
Net als bij de matrixsubexpressie wordt deze syntaxis gebruikt om een hash-tabel te declareren. Zie about_Hash_Tables voor meer informatie.
Oproepoperator &
Hiermee voert u een opdracht, script of scriptblok uit. Met de aanroepoperator, ook wel de aanroepoperator genoemd, kunt u opdrachten uitvoeren die zijn opgeslagen in variabelen en worden vertegenwoordigd door tekenreeksen of scriptblokken. De aanroepoperator wordt uitgevoerd in een onderliggend bereik. Zie about_Scopes voor meer informatie over bereiken.
In dit voorbeeld wordt een opdracht in een tekenreeks opgeslagen en uitgevoerd met behulp van de aanroepoperator.
PS> $c = "get-executionpolicy"
PS> $c
get-executionpolicy
PS> & $c
AllSigned
De aanroepoperator parseert geen tekenreeksen. Dit betekent dat u geen opdrachtparameters in een tekenreeks kunt gebruiken wanneer u de aanroepoperator gebruikt.
PS> $c = "Get-Service -Name Spooler"
PS> $c
Get-Service -Name Spooler
PS> & $c
& : The term 'Get-Service -Name Spooler' is not recognized as the name of a
cmdlet, function, script file, or operable program. Check the spelling of
the name, or if a path was included, verify that the path is correct and
try again.
At line:1 char:2
+ & $c
+ ~~
+ CategoryInfo : ObjectNotFound: (Get-Service -Name Spooler:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
De cmdlet Invoke-Expression kan code uitvoeren die parseringsfouten veroorzaakt bij het gebruik van de aanroepoperator.
PS> & "1+1"
& : The term '1+1' is not recognized as the name of a cmdlet, function, script
file, or operable program. Check the spelling of the name, or if a path was
included, verify that the path is correct and try again.
At line:1 char:2
+ & "1+1"
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (1+1:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
PS> Invoke-Expression "1+1"
2
U kunt de aanroepoperator gebruiken om scripts uit te voeren met behulp van hun bestandsnamen. In het onderstaande voorbeeld ziet u een scriptbestand met spaties. Wanneer u het script probeert uit te voeren, geeft PowerShell in plaats daarvan de inhoud weer van de tekenreeks tussen aannamen die de bestandsnaam bevat. Met de aanroepoperator kunt u de inhoud van de tekenreeks met de bestandsnaam uitvoeren.
PS C:\Scripts> Get-ChildItem
Directory: C:\Scripts
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 8/28/2018 1:36 PM 58 script name with spaces.ps1
PS C:\Scripts> ".\script name with spaces.ps1"
.\script name with spaces.ps1
PS C:\Scripts> & ".\script name with spaces.ps1"
Hello World!
Zie about_Script_Blocks voor meer informatie over scriptblokken.
Operator Cast [ ]
Converteert of beperkt objecten naar het opgegeven type. Als de objecten niet kunnen worden geconverteerd, genereert PowerShell een fout.
[DateTime] '2/20/88' - [DateTime] '1/20/88' -eq [TimeSpan] '31'
Een cast kan ook worden uitgevoerd wanneer een variabele wordt toegewezen aan het gebruik van cast-notatie.
Komma-operator ,
Als binaire operator maakt de komma een matrix of voegt deze toe aan de matrix die wordt gemaakt. In de expressiemodus, als unaire operator, maakt de komma een matrix met slechts één lid. Plaats de komma voor het lid.
$myArray = 1,2,3
$SingleArray = ,1
Write-Output (,1)
Aangezien Write-Object u een argument verwacht, moet u de expressie tussen haakjes plaatsen.
Operator voor puntbronnen .
Hiermee voert u een script uit in het huidige bereik, zodat functies, aliassen en variabelen die door het script worden gemaakt, worden toegevoegd aan het huidige bereik, waarbij bestaande functies, aliassen en variabelen worden overschreven. Parameters die door het script zijn gedeclareerd, worden variabelen. Parameters waarvoor geen waarde is opgegeven, worden variabelen zonder waarde. De automatische variabele $args blijft echter behouden.
. c:\scripts\sample.ps1 1 2 -Also:3
Notitie
De operator voor puntbronnen wordt gevolgd door een spatie. Gebruik de spatie om de punt te onderscheiden van het puntsymbool (.) dat de huidige map vertegenwoordigt.
In het volgende voorbeeld wordt het Sample.ps1 script in de huidige map uitgevoerd in het huidige bereik.
. .\sample.ps1
Operator opmaken -f
Hiermee kunt u tekenreeksen opmaken met behulp van de indelingsmethode van tekenreeksobjecten. Voer de notatietekenreeks aan de linkerkant van de operator in en de objecten die aan de rechterkant van de operator moeten worden opgemaakt.
"{0} {1,-10} {2:N}" -f 1,"hello",[math]::pi
1 hello 3.14
U kunt een numerieke waarde met de aangepaste aanduiding '0' instellen.
Het aantal nullen dat volgt, : geeft de maximale breedte aan waaraan de opgemaakte tekenreeks moet worden opgevuld.
"{0:00} {1:000} {2:000000}" -f 7, 24, 365
07 024 000365
Als u de accolades ({}) in de opgemaakte tekenreeks wilt behouden, kunt u deze ontsnappen door de accolades te verdubbelen.
"{0} vs. {{0}}" -f 'foo'
foo vs. {0}
Zie de methode String.Format en Samengestelde opmaak voor meer informatie.
Indexoperator [ ]
Hiermee selecteert u objecten uit geïndexeerde verzamelingen, zoals matrices en hashtabellen. Matrixindexen zijn gebaseerd op nul, dus het eerste object wordt geïndexeerd als [0]. U kunt ook negatieve indexen gebruiken om de laatste waarden op te halen. Hash-tabellen worden geïndexeerd op sleutelwaarde.
Op basis van een lijst met indexen retourneert de indexoperator een lijst met leden die overeenkomen met die indexen.
PS> $a = 1, 2, 3
PS> $a[0]
1
PS> $a[-1]
3
PS> $a[2, 1, 0]
3
2
1
(Get-HotFix | Sort-Object installedOn)[-1]
$h = @{key="value"; name="PowerShell"; version="2.0"}
$h["name"]
PowerShell
$x = [xml]"<doc><intro>Once upon a time...</intro></doc>"
$x["doc"]
intro
-----
Once upon a time...
Wanneer een object geen geïndexeerde verzameling is, retourneert het object zelf met behulp van de indexoperator voor toegang tot het eerste element. Indexwaarden buiten het eerste element retourneren $null.
PS> (2)[0]
2
PS> (2)[-1]
2
PS> (2)[1] -eq $null
True
PS> (2)[0,0] -eq $null
True
Pijplijnoperator |
Verzendt ("pipes") de uitvoer van de opdracht die eraan voorafgaat aan de opdracht die erop volgt. Wanneer de uitvoer meer dan één object (een verzameling) bevat, verzendt de pijplijnoperator de objecten één voor één.
Get-Process | Get-Member
Get-Service | Where-Object {$_.StartType -eq 'Automatic'}
Bereikoperator ..
Vertegenwoordigt de opeenvolgende gehele getallen in een matrix met gehele getallen, op basis van een boven- en ondergrens.
1..10
foreach ($a in 1..$max) {Write-Host $a}
U kunt ook bereiken in omgekeerde volgorde maken.
10..1
5..-5 | ForEach-Object {Write-Output $_}
Operator voor lidtoegang .
Hiermee opent u de eigenschappen en methoden van een object. De lidnaam kan een expressie zijn.
$myProcess.peakWorkingSet
(Get-Process PowerShell).kill()
'OS', 'Platform' | Foreach-Object { $PSVersionTable. $_ }
Als u powerShell 3.0 start, worden de items in die verzameling automatisch opgesomd in PowerShell wanneer u de operator gebruikt voor een lijstverzamelingsobject dat niet het lid heeft, de items in die verzameling opsommen en wordt de operator voor elk van deze items gebruikt. Zie about_Member-Access_Enumeration voor meer informatie.
Operator statisch lid ::
Roept de statische eigenschappen en methoden van een .NET Framework-klasse aan. Gebruik de statische parameter van de Get-Member cmdlet om de statische eigenschappen en methoden van een object te vinden. De lidnaam kan een expressie zijn.
[datetime]::Now
'MinValue', 'MaxValue' | Foreach-Object { [int]:: $_ }