Megosztás:


kommentekről

Rövid leírás

A PowerShell-megjegyzések használatát ismerteti, és felsorolja a speciális használati eseteket.

Hosszú leírás

Megjegyzéseket írhat a PowerShell-kód széljegyzetek írásához vagy strukturálásához az olvashatóság érdekében. A kód futtatásakor a PowerShell figyelmen kívül hagyja a megjegyzés szövegét.

A megjegyzések fontos kontextust biztosítanak a kód olvasói számára. Megjegyzéseket a következő célokra kell használnia:

  • Összetett kód magyarázata egyszerűbben
  • Egy adott megközelítés kiválasztásának magyarázata
  • Az észben tartandó dokumentációs speciális esetek
  • Segédanyagokra mutató hivatkozások megadása

Egyes megjegyzéseknek különleges jelentésük van a PowerShellben. Lásd: Speciális megjegyzések.

PowerShell-megjegyzésstílusok

A PowerShell két megjegyzésstílust támogat:

  • Egysoros megjegyzések kettőskereszttel (#) kezdődnek, és újsorral végződnek. A # olyan szöveg előzheti meg, amely nem része a megjegyzésnek, beleértve a szóközt is. A nem tömörített forráskóddal azonos sorban elhelyezett egysoros megjegyzéseket sorvégi megjegyzéseknek nevezzük.

  • Blokk megjegyzések<# kezdődnek és #>végződnek. A blokkbejegyzések tetszőleges számú sort tartalmazhatnak, és belefoglalhatók a meg nem írt forráskód előtt, után vagy közepén. A blokkon belüli összes szöveg ugyanannak a megjegyzésnek a része, beleértve a szóközt is.

    Fontos

    Egysoros megjegyzéseket is felvehet egy blokkbejegyzésbe. A blokkbejegyzések azonban nem ágyazhatók be. Ha megpróbál blokkokba rendezett megjegyzéseket beágyazni, a külső blokkokba rendezett megjegyzés az első #>-nál ér véget.

Példák

1. példa: Egysoros megjegyzés

# This is a single-line comment.
# This is also a single-line comment.

2. példa: Megjegyzés letiltása

<#
    This is a block comment.
    Text within the block is a part of the same comment.
Whitespace is unimportant in a block comment.
#>

3. példa: Sorvégi megjegyzés

$var = 4 # This is an end-of-line comment

4. példa: Beágyazott blokk megjegyzése

'Foo'; <# This is an inline block comment #> 'Bar'

5. példa: Teljes példa

<#
    .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
)

Speciális megjegyzések

A PowerShell számos megjegyzés-kulcsszót tartalmaz, amelyek támogatják az adott felhasználásokat.

Megjegyzésalapú súgó

A függvényekhez és szkriptekhez megjegyzésalapú súgótartalmakat írhat egysoros vagy letiltott megjegyzések használatával. A felhasználók a Get-Help parancsmaggal megtekinthetik egy függvény vagy szkript megjegyzésalapú súgóját. A PowerShell 15 megjegyzés kulcsszót határoz meg, amelyek olyan információk megadására használhatók, mint a leírás és a példahasználat.

<#
    .DESCRIPTION
    Comment-based help using a block comment.
#>
function Get-Function { }
# .DESCRIPTION
# Comment-based help using multiple single-line comments.
function Get-Function { }

További információ:

#Requires

A #Requires utasítás megakadályozza a szkriptek futtatását, hacsak az aktuális PowerShell-munkamenet nem felel meg a megadott előfeltételeknek. #Requires a parancsfájl bármely sorában megjelenhet, de a feldolgozás pozíciótól függetlenül ugyanúgy történik.

#Requires -Modules AzureRM.Netcore
#Requires -Version 6.0

param (
    [Parameter(Mandatory)]
    [string[]] $Path
)

További információ található a(z) about_Requireslinkben.

Aláírásblokk

A szkriptek aláírhatók, hogy megfeleljenek a PowerShell végrehajtási szabályzatainak. Az aláírás után egy aláírási blokk lesz hozzáadva egy szkript végéhez. Ez a blokk több egysoros megjegyzés formájában jelenik meg, amelyeket a PowerShell olvas be a szkript végrehajtása előtt.

# SIG # Begin signature block
# ...
# SIG # End signature block

További információkért nézze meg about_Signing.

Shebang

Unix-szerű rendszereken egy shebang (#!) egy szkript elején használt irányelv, amely jelzi, hogy melyik shell-t kell használni a szkript futtatásához. A Shebang nem része a PowerShell nyelvének. A PowerShell normál megjegyzésként értelmezi. A Shebang-et az operációs rendszer értelmezi.

Az alábbi példában a shebang biztosítja, hogy a PowerShell futtassa a szkriptet, amikor a szkriptet nem PowerShell-környezetből hívják meg.

#!/usr/bin/env pwsh
Write-Host 'Begin script'

Kódszerkesztő régiójelölői

Egyes kódszerkesztők támogatják a régiójelölőket, amelyek lehetővé teszik a kódszakaszok összecsukását és kibontását. A PowerShell esetében a régiójelölők olyan megjegyzések, amelyek #region kezdődnek, és #endregionvégződnek. A régiójelölőknek egy sor elején kell lenniük. A régiójelölők támogatottak a PowerShell ISE-ben és a PowerShell-bővítménysel rendelkező Visual Studio Code-ban. A régiójelölők nem részei a PowerShell nyelvének. A PowerShell normál megjegyzésként értelmezi őket.

További információ: A Visual Studio Code dokumentációjának alapszintű szerkesztésének Összecsukható szakasza.

Megjegyzések sztring jogkivonatokban

# és <# #> nincs különleges jelentésük egy bővíthető vagy szó szerinti sztringben. A PowerShell szó szerint értelmezi a karaktereket.

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.

Bizonyos PowerShell-funkciók azonban úgy vannak kialakítva, hogy megjegyzéseket tartalmazó sztringekkel működjenek. A megjegyzés értelmezése az adott funkciótól függ.

Reguláris kifejezés megjegyzései

A PowerShell normál kifejezései (regex) a .NET regex motort használják, amely két megjegyzésstílust támogat:

  • Beágyazott megjegyzés ((?#))
  • Sorvégi megjegyzés (#)

A Regex-megjegyzéseket a PowerShell összes regex-alapú funkciója támogatja. Például:

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

Jegyzet

Egy sorvégi regex megjegyzéshez vagy a (?x) szerkezetre vagy a IgnorePatternWhitespace beállításra van szükség.

További információ:

JSON-megjegyzések

A PowerShell 6.0-tól kezdődően a ConvertFrom-Json parancsmag a következő JSON-megjegyzésstílusokat támogatja:

  • Egysoros megjegyzés (//)
  • Megjegyzés letiltása (/* */)

Jegyzet

A Invoke-RestMethod parancsmag automatikusan deszerializálja a fogadott JSON-adatokat. A PowerShell 6.0-s verzióiban a JSON-adatokban engedélyezettek a megjegyzések.

Például:

'{
    "Foo": "Bar" // This is a single-line comment
}' | ConvertFrom-Json
Foo
---
Bar

Figyelmeztetés

A PowerShell 7.4-től kezdődően a Test-Json parancsmag már nem támogatja a JSON-t megjegyzésekkel. Hiba jelenik meg, ha a JSON megjegyzéseket tartalmaz. A 7.4-et megelőző támogatott verziókban a Test-Json sikeresen elemezte a JSON-t megjegyzésekkel. A PowerShell 7.5-ben a Test-Json lehetőséggel figyelmen kívül hagyhatja a JSON-megjegyzéseket.

CSV-megjegyzések

Import-Csv és ConvertFrom-Csv támogatja a W3C kiterjesztett naplóformátumot. A kivonat karakterrel kezdődő sorokat (#) a program megjegyzésekként kezeli, és figyelmen kívül hagyja, kivéve, ha a megjegyzés #Fields: kezdődik, és az oszlopnevek tagolt listáját tartalmazza. Ebben az esetben a parancsmag ezeket az oszlopneveket használja. Ez a Windows IIS és más webkiszolgálói naplók szabványos formátuma. További információ: Bővített naplófájlformátum.

@'
# This is a CSV comment
Col1,Col2
Val1,Val2
'@ | ConvertFrom-Csv
Col1 Col2
---- ----
Val1 Val2

A Windows PowerShell 5.1-ben az alapértelmezett Export-Csv és ConvertTo-Csv viselkedése a #TYPE megjegyzés formájában adja meg a típusadatokat. A PowerShell 6.0-tól kezdődően az alapértelmezett beállítás nem tartalmazza a megjegyzést, de ezt felül lehet bírálni az IncludeTypeInformation paraméterrel.

[pscustomobject] @{ Foo = 'Bar' } | ConvertTo-Csv -IncludeTypeInformation
#TYPE System.Management.Automation.PSCustomObject
"Foo"
"Bar"

Ha egy #TYPE megjegyzés szerepel a CSV-adatokban, Import-Csv és ConvertFrom-Csv ezzel az információval állíthatja be a deszerializált objektum(ok) pstypenames tulajdonságát.

class Test { $Foo = 'Bar' }
$test = [Test]::new()

$var = $test | ConvertTo-Csv -IncludeTypeInformation | ConvertFrom-Csv
$var.pstypenames
Test
CSV:Test

ConvertFrom-StringData megjegyzések

A ConvertFrom-StringData parancsmag a # kezdetű sorokat megjegyzésekként kezeli. További információ:

Jegyzetek

  • A tömbös megjegyzések nem ágyazhatók egymásba. Az alábbi példában Baz nem része a megjegyzésnek.

    <#
    'Foo'
    <# 'Bar' #>
    'Baz'
    #>
    
  • <# #> nincs különleges jelentése egy egysoros megjegyzésen belül. # nincs különleges jelentése a blokkkommentárban.

  • Megjegyzésként való kezeléshez a megjegyzés karakterének nem lehet része egy nem-magyarázat szimbólumnak. Az alábbi példában #Bar és <#Bar#> a Foo... token részét képező elemei. Ezért ezek nem megjegyzésekként lesznek kezelve.

    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 [...]