在 PowerShell 中註釋程式碼

Marion Paul Kenneth Mendoza 2023年1月30日
  1. 使用註釋符號 (#) 的 PowerShell 單行註釋
  2. PowerShell 使用註釋塊註釋多行程式碼
  3. 使用 Exit 命令的 PowerShell 邊緣案例場景
在 PowerShell 中註釋程式碼

如果你使用過其他語言,例如 Bash、Python 和 Ruby,則在 Windows PowerShell 中註釋掉將是類似的。

本文將討論可用於在 Windows PowerShell 中註釋程式碼的所有用例。

使用註釋符號 (#) 的 PowerShell 單行註釋

從一開始,PowerShell V1.0 就已經發布併發布給公眾,具有註釋程式碼的功能。我們使用符號(#)註釋程式碼。我們用許多名稱來稱呼這個符號,例如數字符號或雜湊,但微軟官方將其稱為註釋符號。

單個註釋符號 (#) 將註釋掉從第一個 # 到行尾的程式碼。當然,你也可以將多個註釋符號放在一行中。

示例程式碼:

#######################################################
# Examples of one-line comments in Windows PowerShell #
#######################################################

Get-Process -Name *host* #### You could put more.

Get-Process -Name *host* # | Stop-Service # You can use it to comment out a part of a line.

# Get-Process -Name *host* # This will comment out the whole line.

註釋程式碼時,最好在註釋符號和程式碼之間留一個空格。一些 cmdlet 使用註釋符號,但不用於註釋程式碼。例如,#REQUIRES cmdlet 是一個眾所周知的 PowerShell 語句,它將阻止指令碼執行,除非滿足模組或先決條件管理單元。

示例程式碼:

Get-Module AzureRM.Netcore | Remove-Module
#REQUIRES -Modules AzureRM.Netcore

使用這些最佳實踐,我們可以避免指令碼中出現不必要的錯誤。

PowerShell 使用註釋塊註釋多行程式碼

要在不使用每行多個註釋符號的情況下注釋多行程式碼,我們可以方便地用小於 (<) 和大於 (>) 符號將我們的註釋符號括起來。我們稱之為註釋塊。

帶有小於號 (<#) 的註釋符號將作為我們註釋塊的開始標記,而帶有大於號的註釋符號將用作結束標記 (#>)。

示例程式碼:

<#
Get-Process -Name *host*
Stop-Service -DisplayName Windows*Update -WhatIf
#>

值得注意的是,你可以在註釋塊之間插入單個註釋符號。

示例程式碼:

<#
Get-Process -Name 'host1'

#Tested up until this point

Stop-Service -DisplayName Windows*Update -WhatIf
#>

但是,通過插入一組新的註釋塊標籤來巢狀註釋塊將導致錯誤。

示例程式碼:

<#
Nope, these are not allowed in PowerShell.

<# This will break your first multiline comment block... #>

...and this will throw a syntax error. #This line will execute the throw cmdlet
#>

或者,按下 Ctrl+J 並單擊 Comment Block 將在你的指令碼中生成一個程式碼塊。

使用 Exit 命令的 PowerShell 邊緣案例場景

請記住,Exit 命令將終止並關閉你的指令碼環境。因此,在 Exit 命令之後寫入的任何內容都不會執行。我們稱之為邊緣案例場景。在 Exit 命令之後寫一些東西是可能的,但不推薦,因為其他指令碼環境可能會誤讀這些額外的行並導致錯誤。

示例程式碼:

Get-Process -Name 'host1'
exit

Anything beyond the `<# exit #>` line is not executed inside the PowerShell scripting environment. However, as mentioned before, this is not recommended despite being possible.
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn