Come si commenta il codice in PowerShell?


939

Come si commenta il codice in PowerShell (1.0 o 2.0)?


24
Nota '#' è un commento in molti linguaggi di shell e script: bash, python, php, ruby ​​e ora powershell.
yzorg,

61
Questo è esattamente il motivo per cui ho pensato che #non fosse un commento in un linguaggio di scripting basato su Windows o Microsoft.
René Nyffenegger,

2
Questo perché, a quanto pare, a differenza di tutte le altre tecnologie, MS non ha fornito a Powershell un riferimento decente. Non sono riuscito a trovarlo da nessuna parte.
dudeNumber4,

5
@ dudeNumber4 PowerShell ha uno dei riferimenti più completi di qualsiasi lingua. Affinché una funzione possa essere aggiunta alla lingua, deve includere una helpdocumentazione completa con esempi, metodi, elenchi di membri, ecc.
TylerH,

Risposte:


1251

In PowerShell V1 c'è solo #da rendere il testo dopo di esso un commento.

# This is a comment in Powershell

In PowerShell V2 <# #>può essere utilizzato per i commenti sui blocchi e più specificamente per i commenti della guida.

#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
{}

Per ulteriori spiegazioni .SYNOPSISe .*consultare about_Comment_Based_Help .

Nota: questi commenti di funzione vengono utilizzati da Get-HelpCmdLet e ​​possono essere inseriti prima della parola chiave Functiono all'interno {}del codice precedente o successivo.


45
non sapevo del commento sul blocco <# #>. bello
Dennis G,

3
Puoi trovare la grammatica per PowerShell v3 qui: microsoft.com/en-us/download/details.aspx?id=36389 . Guarda la sezione B.1.2 Comments.
james.garriss,

Stavo usando la funzione Send-MailMessage, con i backtick per mettere ogni paremeter su una nuova riga, e ne ho commentato uno (-Bcc) e ha causato un errore sulla riga successiva (-Body: il termine '-Body' è non riconosciuto come il nome di un cmdlet ...) Quindi non è supportato commentare una riga nel mezzo di una chiamata a una funzione. Forse è la continuazione della linea, forse è qualcos'altro, in entrambi i casi non è così che mi aspetterei che funzioni
Davos

Commentare così sarebbe effettivamente in linea. Il tuo comando finirebbe per essere analizzato come: Send-MailMessage -To bob@bob.com #Questo è un commento -Soggetto "Aiutami!" ecc.
CitizenRon,

Ho trovato più affidabile inserire il commento della funzione immediatamente dopo l'apertura {( all'interno della funzione). In particolare, ho avuto problemi a farlo funzionare all'esterno con le funzioni del modulo di script.
jpmc26,



36

I commenti a riga singola iniziano con un simbolo di hash , tutto ciò che si trova a destra del #verrà ignorato:

# Comment Here

In PowerShell 2.0 e versioni successive è possibile utilizzare i commenti su blocchi multilinea:

<# 
  Multi 
  Line 
#> 

È possibile utilizzare i commenti a blocchi per incorporare il testo dei commenti in un comando:

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

Nota: poiché PowerShell supporta Tab Completion, è necessario fare attenzione a copiare e incollare Space + TABprima dei commenti.


3
+1 per mostrare lo stile del commento di blocco in una sola riga . Sono venuto qui alla ricerca di come commentare temporaneamente singoli elementi di un array tutti dichiarati su una riga.
Chris Oldwood,

17

Qui

# Single line comment in Powershell

<# 
--------------------------------------
Multi-line comment in PowerShell V2+ 
-------------------------------------- 
#>

11
Cosa aggiunge questo alle risposte esistenti?
TZHX,

5
Semplicemente diretto e diretto
Vic

1
Penso che molte delle risposte dimentichino che l'inglese non è sempre la prima lingua, e diventano molto prolissi e complessi nel loro preambolo prima di arrivare effettivamente alla risposta. Questa risposta è perfetta, arrivando direttamente agli esempi che stiamo cercando.
Geoff Griswald,

15

In PowerShell ISE puoi premere Ctrl+ Jper aprire il menu Avvia frammento e selezionare Blocco commenti :

inserisci qui la descrizione dell'immagine


Ciò inserisce un nuovo commento di blocco; non commenta le linee esistenti.
TylerH,

3

Tu puoi fare:

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

 <#
    for more lines
    ...
    ...
    ...
    ..
    .
 #>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.