Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Short description
Beschrijft de operators die worden ondersteund door PowerShell.
Long description
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.
Arithmetic 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 toevoegingsoperator voegt elementen samen. De vermenigvuldigingsoperator retourneert het opgegeven aantal exemplaren van elk element. U kunt rekenkundige operatoren gebruiken op elk .NET-type waarmee ze worden geïmplementeerd, zoals: Int, String, DateTime, en Hashtablematrices.
Bitsgewijze operatoren (-band, -bor, -bxor, -bnot, , -shl) -shrmanipuleren de bitpatronen in waarden.
For more information, see about_Arithmetic_Operators.
Assignment Operators
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.
For more information, see about_Assignment_Operators.
Comparison Operators
Gebruik vergelijkingsoperatoren (, , , , , ) -eq-neom waarden en testvoorwaarden te vergelijken. -gt-lt-le-ge 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 (-match, -notmatch) maken gebruik van jokertekens zoals -replace en -like. -notlike*?
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.
For more information, see about_Comparison_Operators.
Logical 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.
For more information, see about_Logical_Operators.
Redirection Operators
Gebruik omleidingsoperators (>, >>, 2>, 2>>en 2>&1) om de uitvoer van een opdracht of expressie naar een tekstbestand te verzenden. De omleidingsoperators werken 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.
For more information, see about_Redirection
Operatoren splitsen en samenvoegen
De -split operatoren -join delen en combineren subtekenreeksen. De -split operator splitst een tekenreeks in subtekenreeksen. De -join operator voegt meerdere tekenreeksen samen in één tekenreeks.
For more information, see about_Split and about_Join.
Type Operators
Gebruik de typeoperators (-is, -isnot, -as) om het .NET-type van een object te zoeken of te wijzigen.
For more information, see about_Type_Operators.
Unary Operators
Gebruik de unaire ++ operatoren -- om waarden - en voor negatie te verhogen of verlagen. Als u bijvoorbeeld de variabele $a wilt verhogen van 9 naar 10, typt $a++u .
For more information, see about_Arithmetic_Operators.
Special Operators
Speciale operators hebben specifieke gebruiksvoorbeelden 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 worden (...) operatorprioriteit in expressies overschreven. Bijvoorbeeld: (1 + 2) / 3
In PowerShell zijn er echter aanvullende gedragingen.
Resultaatexpressies groeperen
(...) allows you to let output from a command participate in an expression.
For example:
PS> (Get-Item *.txt).Count -gt 10
True
Note
Als u een opdracht tussen haakjes verpakt, wordt de automatische variabele $? ingesteld op $true, zelfs wanneer de ingesloten opdracht zelf is ingesteld $? op $false.
For example, (Get-Item /Nosuch); $? unexpectedly yields True. For more information about $?, see about_Automatic_Variables.
Gegroepeerde expressies door pijpen
When used as the first segment of a pipeline, wrapping a command or expression in parentheses invariably causes enumeration of the expression result. If the parentheses wrap a command, it's run to completion with all output collected in memory before the results are sent through the pipeline.
De uitvoer voor deze instructies is bijvoorbeeld anders:
PS> ConvertFrom-Json '["a", "b"]' | ForEach-Object { "The value is '$_'" }
The value is 'a b'
PS> (ConvertFrom-Json '["a", "b"]') | ForEach-Object { "The value is '$_'" }
The value is 'a'
The value is 'b'
Als u een expressie groepeert voordat u sluist, zorgt u er ook voor dat de volgende object-by-objectverwerking de opsomming die door de opdracht wordt gebruikt, niet kan verstoren om de uitvoer ervan te produceren.
Het sluisen van de uitvoer naar Get-ChildItem kan Rename-Item bijvoorbeeld onverwachte effecten hebben waarbij de naam van een item wordt gewijzigd en vervolgens opnieuw wordt gedetecteerd en een tweede keer een nieuwe naam heeft gekregen.
Toewijzingsinstructies groeperen
Niet-gegroepeerde toewijzingsinstructies leveren geen uitvoerwaarden op. When grouping an assignment statement, the value of the assigned variable is passed through and can be used in larger expressions. For example:
PS> ($var = 1 + 2)
3
PS> ($var = 1 + 2) -eq 3
True
Als u de instructie tussen haakjes verpakt, wordt deze omgezet in een expressie die de waarde van $var.
Dit gedrag is van toepassing op alle toewijzingsoperatoren, inclusief samengestelde operators zoals +=, en de operatoren voor incrementele (++) en degradatie (--).
De volgorde van de bewerking voor incrementeel en verlagen hangt echter af van hun positie.
PS> $i = 0
PS> (++$i) # prefix
1
PS> $i = 0
PS> ($i++) # postfix
0
PS> $i
1
In het voorvoegsel wordt de waarde verhoogd $i voordat de uitvoer wordt uitgevoerd. In het postfix-geval wordt de waarde verhoogd $i nadat de uitvoer is uitgevoerd.
U kunt deze techniek ook gebruiken in de context van een voorwaardelijke instructie, zoals de if instructie.
if ($textFiles = Get-ChildItem *.txt) {
$textFiles.Count
}
Als er in dit voorbeeld geen bestanden overeenkomen, retourneert de Get-ChildItem opdracht niets en wijst deze niets toe aan $textFiles, wat wordt beschouwd $false in een Booleaanse context. If one or more FileInfo objects are assigned to $textFiles, the conditional evaluates to $true. U kunt werken met de waarde in $textFiles de hoofdtekst van de if instructie.
Note
Hoewel deze techniek handig en beknopt is, kan dit leiden tot verwarring tussen de toewijzingsoperator (=) en de gelijkheidsvergelijkingsoperator (-eq).
Operator voor subexpressie $( )
Retourneert het resultaat van een of meer instructies. For a single result, returns a scalar. 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. For more information, see about_Hash_Tables.
Oproepoperator &
Hiermee voert u een opdracht-, script- of scriptblok uit. The call operator, also known as the invocation operator, lets you run commands that are stored in variables and represented by strings or script blocks. De aanroepoperator wordt uitgevoerd in een onderliggend bereik. For more about scopes, see about_Scopes. U kunt deze gebruiken om tekenreeksen te maken die de opdracht, parameters en argumenten bevatten die u nodig hebt en vervolgens de tekenreeks aan te roepen alsof het een opdracht is. De tekenreeksen die u maakt, moeten dezelfde parseringsregels volgen als een opdracht die u op de opdrachtregel typt. For more information, see about_Parsing.
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 binnen 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
The Invoke-Expression cmdlet can execute code that causes parsing errors when using the call operator.
PS> & "1+1"
&: The term '1+1' is not recognized as a name of a cmdlet, function, script
file, or executable 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 een script uitvoeren met behulp van de bestandsnaam. Een scriptbestand moet een .ps1 bestandsextensie hebben om uitvoerbaar te zijn. Bestanden met spaties in hun pad moeten tussen aanhalingstekens staan. Als u probeert het pad tussen aan citeren uit te voeren, wordt in PowerShell de inhoud van de tekenreeks weergegeven in plaats van het script uit te voeren. 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!
For more about script blocks, see about_Script_Blocks.
Cast-operator [ ]
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'
A cast can also be performed when a variable is assigned to using cast notation.
Komma-operator ,
Als binaire operator maakt de komma een matrix of voegt deze toe aan de matrix die wordt gemaakt. In de expressiemodus, als een 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-Output u een argument verwacht, moet u de expressie tussen haakjes plaatsen.
Operator voor puntbronnen .
Voert 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 worden 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
Note
De operator voor puntbronnen wordt gevolgd door een spatie. Gebruik de spatie om de punt te onderscheiden van het puntteken (.) dat de huidige map vertegenwoordigt.
In het volgende voorbeeld wordt het script Sample.ps1 in de huidige map uitgevoerd in het huidige bereik.
. .\sample.ps1
Operator voor opmaak -f
Geef toegang tot de functie voor samengestelde .NET-opmaak. A composite format string consists of fixed text intermixed with indexed placeholders, called format items. Deze opmaakitems komen overeen met de objecten in de lijst.
Elk opmaakitem heeft de volgende vorm en bestaat uit de volgende onderdelen:
{index[,alignment][:formatString]}
De overeenkomende accolades ({ en }) zijn vereist.
De opmaakbewerking levert een resultaattekenreeks op die bestaat uit de oorspronkelijke vaste tekst die is gemengd met de tekenreeksweergave van de objecten in de lijst. For more information, see Composite Formatting.
Voer de tekenreeks voor samengestelde opmaak 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 nul-pad een numerieke waarde met de aangepaste aanduiding 0. Het aantal nullen na de : volgende geeft de maximale breedte aan waaraan de opgemaakte tekenreeks moet worden gekoppeld.
"{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}
Indexoperator [ ]
Selecteert 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 om toegang te krijgen 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 ..
De bereikoperator kan worden gebruikt om een matrix met opeenvolgende gehele getallen weer te geven. De waarden die door de bereikoperator worden samengevoegd, definiëren de begin- en eindwaarden van het bereik.
1..10
$max = 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 $_}
De begin- en eindwaarden van het bereik kunnen elk paar expressies zijn die resulteren in een geheel getal of een teken. De eindpunten van het bereik moeten worden geconverteerd naar ondertekende 32-bits gehele getallen ([int32]). Grotere waarden veroorzaken een fout. Als het bereik ook wordt vastgelegd in een matrix, is de grootte van de resulterende matrix beperkt tot 268435448 (of 256mb - 8). Dit is de maximale grootte van een matrix in .NET Framework.
U kunt bijvoorbeeld de leden van een opsomming gebruiken voor de begin- en eindwaarden.
PS> enum Food {
Apple
Banana = 3
Kiwi = 10
}
PS> [Food]::Apple..[Food]::Kiwi
0
1
2
3
4
5
6
7
8
9
10
Important
Het resulterende bereik is niet beperkt tot de waarden van de opsomming. In plaats daarvan vertegenwoordigt het waardenbereik tussen de twee opgegeven waarden. U kunt de bereikoperator niet gebruiken om de leden van een opsomming betrouwbaar weer te geven.
Operator voor lidtoegang .
Hiermee worden de eigenschappen en methoden van een object geopend. De lidnaam kan een expressie zijn.
$myProcess.PeakWorkingSet
(Get-Process powershell).Kill()
'OS', 'Platform' | ForEach-Object { $PSVersionTable. $_ }
Als u powerShell 3.0 start, wordt de items in die verzameling automatisch opgesomd in PowerShell wanneer u de operator gebruikt voor een lijstverzamelingsobject dat niet over het lid beschikt. In PowerShell worden de items in die verzameling automatisch opgesomd en wordt de operator voor elk van deze items gebruikt. For more information, see about_Member-Access_Enumeration.
Operator statisch lid ::
Roept de statische eigenschappen en methoden van een .NET-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]:: $_ }