如何在 PowerShell(1.0 或 2.0)中注释掉代码?
#
不是基于 Windows 或 Microsoft 的脚本语言中的注释的原因。
help
文档以及示例、方法和成员列表等。
在 PowerShell V1 中,只有 #
可以将其后面的文本作为注释。
# This is a comment in PowerShell
在 PowerShell V2 中,<# #>
可用于块注释,更具体地用于帮助注释。
#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
{}
有关 .SYNOPSIS
和 .*
的更多说明,请参阅 about_Comment_Based_Help。
备注:这些函数注释由 Get-Help
CmdLet 使用,可以放在关键字 Function
之前,也可以放在代码本身之前或之后的 {}
内。
单行注释以 hash symbol 开头,#
右侧的所有内容都将被忽略:
# Comment Here
在 PowerShell 2.0 及更高版本中,可以使用多行块注释:
<#
Multi
Line
#>
您可以使用块注释在命令中嵌入注释文本:
Get-Content -Path <# configuration file #> C:\config.ini
注意:因为 PowerShell 支持 Tab Completion,所以在评论前复制和粘贴 Space + TAB
时需要小心。
在 PowerShell ISE 中,您可以按 Ctrl+J 打开 Start Snipping 菜单并选择 Comment block:
https://i.stack.imgur.com/caJt2.png
这里
# Single line comment in PowerShell
<#
--------------------------------------
Multi-line comment in PowerShell V2+
--------------------------------------
#>
--------------------------------------
在这里看起来像注释语法,但不是!
为此使用主题标签,后跟空格(!):
# Comment here
不要忘记这里的空白!否则会干扰内部命令。
例如,这不是评论:
#requires -runasadmin
#requires -runasadmin
) 中发生的情况?它以什么方式干扰内部命令?请通过 editing your answer 回复,而不是在评论中(没有“编辑:”、“更新:”或类似内容 - 答案应该看起来像是今天写的)。
#Requires
statement,它允许脚本指定它的一些先决条件。这个答案似乎建议始终将空格作为评论的第一个字符,以避免无意中将评论视为 #Requires
语句;这不仅看起来不太可能,而且如果 #Requires
语句不满足或格式不正确,那么无论如何都会引发错误。
你(们)能做到:
(Some basic code) # Use "#" after a line and use:
<#
for more lines
...
...
...
..
.
#>
有一种插入注释的特殊方法添加脚本的末尾:
....
exit
Hi
Hello
We are comments
And not executed
exit
之后的任何内容都不会执行,其行为与注释非常相似。
我参加这个聚会有点晚了,但似乎没有人真正编写所有用例。所以...
目前(2020 年秋季及以后)仅受支持的 PowerShell 版本是:
Windows PowerShell 5.1.x
PowerShell 7.0.x。
您不想或不应该使用不同版本的 PowerShell。
两个版本(或任何其他版本,您可以在某些过时的站点上使用 WPS 3.0-5.0、PS Core 6.xx)共享相同的评论功能。
一行注释
# Get all Windows Service processes <-- one line comment, it starts with '#'
Get-Process -Name *host*
Get-Process -Name *host* ## You could put as many ### as you want, it does not matter
Get-Process -Name *host* # | Stop-Service # Everything from the first # until end of the line is treated as comment
Stop-Service -DisplayName Windows*Update # -WhatIf # You can use it to comment out cmdlet switches
多行注释
<#
Everyting between '< #' and '# >' is
treated as a comment. A typical use case is for help, see below.
# You could also have a single line comment inside the multi line comment block.
# Or two... :)
#>
<#
.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
Some additional notes. This keyword can be used only once in each topic.
This keyword can be used only once in each topic.
.LINK
A link used when Get-Help with a switch -OnLine is used.
This keyword can be used only once in each topic.
.EXAMPLE
Example 1
You can use this keyword as many as you want.
.EXAMPLE
Example 2
You can use this keyword as many as you want.
#>
嵌套多行注释
<#
Nope, these are not allowed in PowerShell.
<# This will break your first multiline comment block... #>
...and this will throw a syntax error.
#>
在代码中嵌套多行注释
<#
The multi line comment opening/close
can be also used to comment some nested code
or as an explanation for multi chained operations..
#>
Get-Service | <# Step explanation #>
Where-Object { $_.Status -eq [ServiceProcess.ServiceControllerStatus]::Stopped } |
<# Format-Table -Property DisplayName, Status -AutoSize |#>
Out-File -FilePath Services.txt -Encoding Unicode
边缘案例场景
# Some well written script
exit
Writing something after exit is possible but not recommended.
It isn't a comment.
Especially in Visual Studio Code, these words baffle PSScriptAnalyzer.
You could actively break your session in VS Code.
B.1.2 Comments
部分。{
(inside 函数)之后立即放置函数注释更可靠。特别是,我在使用脚本模块功能使其在外部工作时遇到了麻烦。