Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Kort beskrivning
Beskriver hur du använder PowerShell-kommentarer och visar särskilda användningsfall.
Lång beskrivning
Du kan skriva kommentarer för att kommentera eller strukturera din PowerShell-kod för att underlätta läsbarheten. När koden körs ignoreras kommentarstexten av PowerShell.
Kommentarer ger viktig kontext till läsare av koden. Du bör använda kommentarer i följande syfte:
- Förklara komplex kod i enklare termer
- Förklara varför en viss metod valdes
- Dokumentera gränsfall att känna till
- Ange länkar till stödreferensmaterial
Vissa kommentarer har särskild betydelse i PowerShell. Se Särskilda kommentarer.
PowerShell-kommentarsformat
PowerShell har stöd för två kommentarsformat:
- kommentarer med en rad börja med hash-tecknet ( - #) och sluta med en ny rad.- #kan föregås av text som inte är en del av kommentaren, inklusive blanksteg. Enradskommentarer som placeras på samma rad som okommenterad källkod kallas för kommentarer i slutet av raden.
- Blockera kommentarer börja med - <#och sluta med- #>. En blockkommentare kan omfatta valfritt antal rader och kan inkluderas före, efter eller mitt i den okommenterade källkoden. All text i blocket behandlas som en del av samma kommentar, inklusive blanksteg.- Viktig - Du kan inkludera enradskommentarer i en blockkommentar. Du kan dock inte kapsla blockkommentarer. Om du försöker kapsla blockkommentarer slutar den yttre blockkommentaren vid den första - #>som påträffas.
Examples
Exempel 1: Kommentar med en rad
# This is a single-line comment.
# This is also a single-line comment.
Exempel 2: Blockera kommentar
<#
    This is a block comment.
    Text within the block is a part of the same comment.
Whitespace is unimportant in a block comment.
#>
Exempel 3: Kommentar från radslut
$var = 4 # This is an end-of-line comment
Exempel 4: Infogad blockkommentering
'Foo'; <# This is an inline block comment #> 'Bar'
Exempel 5: Fullständigt exempel
<#
    .DESCRIPTION
    Demonstrates PowerShell's different comment styles.
#>
param (
    [string] $Param1, # End-of-line comment
    <# Inline block comment #> $Param2
)
$var = 1, <# Inline block comment #> 2, 2
# Single-line comment.
# Another single-line comment.
$var.Where(
    <# Arg1 note #> { $_ -eq 2 },
    <# Arg2 note #> 'First',
    <# Arg3 note #> 1
)
Särskilda kommentarer
PowerShell innehåller flera kommentarsnyckelord som stöder specifika användningsområden.
Kommentarsbaserad hjälp
Du kan skriva kommentarsbaserat hjälpinnehåll för funktioner och skript med antingen enrads- eller blockkommentarer. Användare kan använda cmdleten Get-Help för att visa kommentarsbaserad hjälp för en funktion eller ett skript. PowerShell definierar 15 kommentarsnyckelord som kan användas för att ange information, till exempel beskrivning och exempelanvändning.
<#
    .DESCRIPTION
    Comment-based help using a block comment.
#>
function Get-Function { }
# .DESCRIPTION
# Comment-based help using multiple single-line comments.
function Get-Function { }
Mer information finns i:
#Requires
Instruktionen #Requires förhindrar att ett skript körs om inte den aktuella PowerShell-sessionen uppfyller de angivna kraven. 
              #Requires kan visas på valfri rad i ett skript, men bearbetas på samma sätt oavsett position.
#Requires -Modules AzureRM.Netcore
#Requires -Version 6.0
param (
    [Parameter(Mandatory)]
    [string[]] $Path
)
Mer information finns i about_Requires.
Signaturfält
Skript kan signeras så att de följer PowerShell-körningsprinciper. När det är signerat läggs ett signaturblock till i slutet av ett skript. Det här blocket består av flera enradskommentarer som läses av PowerShell innan skriptet körs.
# SIG # Begin signature block
# ...
# SIG # End signature block
Mer information finns i about_Signing.
Schabraket
På Unix-liknande system är ett shebang- (#!) ett direktiv som används i början av ett skript för att ange vilket gränssnitt som ska användas för att köra skriptet.
Shebang är inte en del av PowerShell-språket. PowerShell tolkar det som en vanlig kommentar. Shebang tolkas av operativsystemet.
I följande exempel ser shebangen till att PowerShell kör skriptet när skriptet anropas från en icke-PowerShell-kontext.
#!/usr/bin/env pwsh
Write-Host 'Begin script'
Regionmarkörer för kodredigeraren
Vissa kodredigerare stöder regionmarkörer som gör att du kan komprimera och expandera kodavsnitt. För PowerShell är regionmarkörerna kommentarer som börjar med #region och slutar med #endregion. Regionmarkörerna måste vara i början av en rad. Regionmarkörerna stöds i PowerShell ISE och i Visual Studio Code med PowerShell-tillägget. Regionmarkörerna är inte en del av PowerShell-språket. PowerShell tolkar dem som vanliga kommentarer.
Mer information finns i avsnittet Folding i dokumentationen Basic-redigering i Visual Studio Code.
Kommentarer i strängtoken
              # och <# #> har inte någon särskild betydelse i en expanderbar eller ordagrann sträng. PowerShell tolkar tecknen bokstavligen.
PS> '# This is not interpreted as a comment.'
# This is not interpreted as a comment.
PS> "This is <# also not interpreted #> as a comment."
This is <# also not interpreted #> as a comment.
Vissa PowerShell-funktioner är dock utformade för att fungera med strängar som innehåller kommentarer. Tolkningen av kommentaren är beroende av den specifika funktionen.
Kommentarer för reguljära uttryck
Reguljära uttryck (regex) i PowerShell använder motorn .NET regex, som stöder två kommentarsformat:
- Kommentar i text ((?#))
- Kommentar vid radslut (#)
Regex-kommentarer stöds av alla regex-baserade funktioner i PowerShell. Till exempel:
PS> 'book' -match '(?# This is an inline comment)oo'
True
PS> 'book' -match '(?x)oo# This is an end-of-line comment'
True
PS> $regex = 'oo # This is an end-of-line comment'
PS> 'book' -split $regex, 0, 'IgnorePatternWhitespace'
b
k
Not
En regexkommentar i slutet av raden kräver antingen (?x)-konstruktionen eller alternativet IgnorePatternWhitespace.
Mer information finns i:
JSON-kommentarer
Från och med PowerShell 6.0 stöder cmdleten ConvertFrom-Json följande JSON-kommentarsformat:
- Kommentar med en rad (//)
- Blockera kommentar (/* */)
Not
Cmdleten Invoke-RestMethod deserialiserar automatiskt mottagna JSON-data. I PowerShell 6.0 och senare tillåts kommentarer i JSON-data.
Till exempel:
'{
    "Foo": "Bar" // This is a single-line comment
}' | ConvertFrom-Json
Foo
---
Bar
Varning
Från och med PowerShell 7.4 stöder cmdleten Test-Json inte längre JSON med kommentarer. Ett fel returneras om JSON innehåller kommentarer. I versioner som stöds före 7.4 parsar Test-Json JSON med kommentarer. I PowerShell 7.5 innehåller Test-Json ett alternativ för att ignorera JSON-kommentarer.
CSV-kommentarer
              Import-Csv och ConvertFrom-Csv har stöd för W3C Extended Log-formatet.
Rader som börjar med hash-tecknet (#) behandlas som kommentarer och ignoreras om inte kommentaren börjar med #Fields: och innehåller avgränsad lista med kolumnnamn. I så fall använder cmdleten dessa kolumnnamn. Det här är standardformatet för Windows IIS och andra webbserverloggar. Mer information finns i utökat loggfilformat.
@'
# This is a CSV comment
Col1,Col2
Val1,Val2
'@ | ConvertFrom-Csv
Col1 Col2
---- ----
Val1 Val2
I Windows PowerShell 5.1 är standardbeteendet Export-Csv och ConvertTo-Csv att inkludera typinformation i form av en #TYPE kommentar.
Från och med PowerShell 6.0 är standardvärdet inte att inkludera kommentaren, men detta kan åsidosättas med parametern IncludeTypeInformation.
[pscustomobject] @{ Foo = 'Bar' } | ConvertTo-Csv -IncludeTypeInformation
#TYPE System.Management.Automation.PSCustomObject
"Foo"
"Bar"
När en #TYPE-kommentar ingår i CSV-data, använder Import-Csv och ConvertFrom-Csv denna information för att ställa in egenskapen pstypenames för de deserialiserade objekten.
class Test { $Foo = 'Bar' }
$test = [Test]::new()
$var = $test | ConvertTo-Csv -IncludeTypeInformation | ConvertFrom-Csv
$var.pstypenames
Test
CSV:Test
              ConvertFrom-StringData kommentarer
I dess strängdata behandlar cmdleten ConvertFrom-StringData rader som börjar med # som kommentarer. Mer information finns i:
Noteringar
- Blockkommentar kan inte kapslas. I följande exempel är - Bazinte en del av kommentaren.- <# 'Foo' <# 'Bar' #> 'Baz' #>
- <# #>har ingen särskild betydelse i en kommentar med en enda rad.- #har ingen särskild betydelse i en blockkommentare.
- För att behandlas som en kommentar får kommentarstecknet inte vara en del av en token som inte är kommentar. I följande exempel är - #Baroch- <#Bar#>en del av- Foo...token. Därför behandlas de inte som kommentarer.- PS> Foo#Bar Foo#Bar: The term 'Foo#Bar' is not recognized as a name [...] PS> Foo<#Bar#> Foo<#Bar#>: The term 'Foo<#Bar#>' is not recognized as a name [...]