在 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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn