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 は出荷され、コードにコメントを付ける機能を備えて一般にリリースされています。記号(#)を使用してコードをコメントアウトします。この記号は、番号記号やハッシュなどの多くの名前で呼ばれていますが、Microsoft は正式にコメント記号と呼んでいます。

単一のコメント記号(#)は、最初の # から行の終わりまでコードをコメントアウトします。もちろん、1 行に複数のコメント記号を入れることもできます。

サンプルコード:

#######################################################
# 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.

コードにコメントを付けるときは、コメント記号とコードの間にスペースを入れることをお勧めします。一部のコマンドレットはコメント記号を使用しますが、コードのコメントには使用しません。たとえば、#REQUIRES コマンドレットは、モジュールまたは前提条件のスナップインが満たされない限りスクリプトを実行できないようにする、よく知られた PowerShell ステートメントです。

サンプルコード:

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

これらのベストプラクティスを使用すると、スクリプトでの不要なエラーを回避できます。

PowerShell がコメントブロックを使用して複数行をコメント化する

1 行に複数のコメント記号を使用せずに複数行のコードをコメント化するには、コメント記号を小(<)および大(>)記号で囲むと便利です。これをコメントブロックと呼びます。

より小さい記号(<#)が付いたコメント記号はコメントブロックの開始タグとして機能し、大きい記号が付いたコメント記号は終了タグ(#>)として機能します。

サンプルコード:

<#
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を押してコメントブロックをクリックすると、スクリプトにコードブロックが生成されます。

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