Wie kommentieren Sie Code in PowerShell aus?

938

Wie kommentieren Sie Code in PowerShell (1.0 oder 2.0) aus?

Labyrinth
quelle
24
Hinweis '#' ist ein Kommentar in vielen Shell- und Skriptsprachen: Bash, Python, PHP, Ruby und jetzt Powershell.
Yzorg
61
Das ist genau , warum ich davon ausgegangen , dass #kein Kommentar in einer Windows oder Microsoft basierten Skriptsprache.
René Nyffenegger
2
Das liegt anscheinend daran, dass MS Powershell im Gegensatz zu all ihren anderen Technologien keine anständige Referenz gegeben hat. Ich konnte es nirgendwo finden.
dudeNumber4
5
@ dudeNumber4 PowerShell verfügt über eine der umfassendsten Referenzen aller Sprachen. Damit eine Funktion zur Sprache hinzugefügt werden kann, muss sie eine umfassende helpDokumentation mit Beispielen, Methoden- und Mitgliederlisten usw. enthalten.
TylerH

Antworten:

1250

In PowerShell V1 muss #der Text danach nur noch kommentiert werden.

# This is a comment in Powershell

In PowerShell <# #>kann V2 für Blockkommentare und insbesondere für Hilfekommentare verwendet werden.

#REQUIRES -Version 2.0

<#
.SYNOPSIS
    A brief description of the function or script. This keyword can be used
    only once in each topic.
.DESCRIPTION
    A detailed description of the function or script. This keyword can be
    used only once in each topic.
.NOTES
    File Name      : xxxx.ps1
    Author         : J.P. Blanc (jean-paul_blanc@silogix-fr.com)
    Prerequisite   : PowerShell V2 over Vista and upper.
    Copyright 2011 - Jean Paul Blanc/Silogix
.LINK
    Script posted over:
    http://silogix.fr
.EXAMPLE
    Example 1
.EXAMPLE
    Example 2
#>
Function blabla
{}

Weitere Erläuterungen zu .SYNOPSISund .*sehen about_Comment_Based_Help .

Anmerkung: Diese Funktionskommentare werden vom Get-HelpCmdLet verwendet und können vor dem Schlüsselwort Functionoder innerhalb {}des Codes vor oder nach dem Code selbst eingefügt werden .

JPBlanc
quelle
45
wusste nichts über den <# #> Blockkommentar. nett
Dennis G
3
Die Grammatik für PowerShell v3 finden Sie hier: microsoft.com/en-us/download/details.aspx?id=36389 . Schauen Sie sich den Abschnitt an B.1.2 Comments.
James.garriss
Ich habe die Send-MailMessage-Funktion mit Backticks verwendet, um jeden Parameter in eine neue Zeile zu setzen, und einen davon auskommentiert (-Bcc). In der nächsten Zeile wurde ein Fehler verursacht (-Body: Der Begriff '-Body' lautet wird nicht als Name eines Cmdlets erkannt ...) Es scheint also, dass das Auskommentieren einer Zeile während eines Aufrufs einer Funktion nicht unterstützt wird. Vielleicht ist es die Fortsetzung der Linie, vielleicht ist es etwas anderes, so oder so würde ich nicht erwarten, dass es funktioniert
Davos
Ein solcher Kommentar wäre eigentlich inline. Ihr Befehl wird am Ende wie folgt analysiert: Send-MailMessage -To [email protected] #Dies ist ein Kommentar -Subject "Help Me!" usw.
CitizenRon
Ich fand es zuverlässiger, den Funktionskommentar unmittelbar nach dem Öffnen {( innerhalb der Funktion) zu platzieren. Insbesondere hatte ich Probleme damit, dass es außerhalb mit Skriptmodulfunktionen funktioniert.
jpmc26
36

Einzeilige Kommentare beginnen mit einem Hash-Symbol . Alles rechts von #wird ignoriert:

# Comment Here

In PowerShell 2.0 und höher können mehrzeilige Blockkommentare verwendet werden:

<# 
  Multi 
  Line 
#> 

Sie können Blockkommentare verwenden, um Kommentartext in einen Befehl einzubetten:

Get-Content -Path <# configuration file #> C:\config.ini

Hinweis: Da PowerShell das Ausfüllen von Registerkarten unterstützt , müssen Sie beim Kopieren und Einfügen Space + TABvor Kommentaren vorsichtig sein .

Alexander
quelle
3
+1 zum Anzeigen der Verwendung des Blockkommentarstils in einer einzelnen Zeile . Ich bin hierher gekommen, um zu suchen, wie einzelne Elemente eines Arrays, die alle in einer Zeile deklariert sind, vorübergehend auskommentiert werden können.
Chris Oldwood
17

Hier

# Single line comment in Powershell

<# 
--------------------------------------
Multi-line comment in PowerShell V2+ 
-------------------------------------- 
#>
Vic
quelle
11
Was trägt dies zu den vorhandenen Antworten bei?
TZHX
5
Halten Sie es einfach und direkt
Vic
1
Ich denke, viele der Antworten vergessen, dass Englisch nicht immer eine Muttersprache ist, und gehen in ihrer Präambel viel zu ausführlich und komplex vor, bevor sie tatsächlich zur Antwort kommen. Diese Antwort ist perfekt und führt direkt zu den Beispielen, nach denen wir suchen.
Geoff Griswald
15

In PowerShell ISE können Sie Ctrl+ drückenJ , um das Start Snipping- Menü zu öffnen und Kommentarblock auszuwählen :

Geben Sie hier die Bildbeschreibung ein

Martin Brandl
quelle
Dies fügt einen neuen Blockkommentar ein. Bestehende Zeilen werden nicht auskommentiert.
TylerH
3

Du kannst das schaffen:

 (Some basic code) # Use "#" after a line and use:

 <#
    for more lines
    ...
    ...
    ...
    ..
    .
 #>
Herr X CT
quelle