カスタムPowerShellスクリプトまたは関数を作成していて、ヘルプ情報を追加する必要がありますか? このガイドでは、そのための手順を説明します。
このガイドの最初のセクションでは、PowerShellスクリプトまたは関数にヘルプを追加する2つの方法を学習します。 次に、2番目のセクションでは、いずれかの方法を使用してスクリプトにヘルプを追加する方法を学習します。
それだけでなく、スクリプトや関数にヘルプを追加することに関してよくある質問に答えるFAQセクションもあります。
PowerShellヘルプの概要
PowerShellコマンドレットの構文とパラメーターに関する情報が必要な場合は、Get-Helpコマンドを実行します。 たとえば、Get-ChildItemコマンドレットに関する情報が必要な場合は、以下のコマンドを実行します。
Get-Help Get-ChildItem
これがPowerShellのコマンドの結果です…
スクリーンショットからわかるように、Get-Helpコマンドは、コマンドレットのNAMEとSYNOPSISを返します。 それに加えて、構文、説明、およびGet-ChildItemに関するその他の関連情報も返しました。
この記事の目的は、このヘルプ情報を独自のPowerShellスクリプトまたは関数に追加する方法を説明することです。
最初の例では、スクリプトをPowerShell関数に変換すると、一部の情報が自動的に追加されます。 ただし、このガイドの後半で説明するように、関数にヘルプ情報を追加して、情報の一部を追加する必要があります。
PowerShellスクリプトまたは関数にヘルプを追加する方法は2つあります。
- コメントベースのヘルプメソッドを使用する
- XMLヘルプファイルを作成する
このガイドでは、コメントベースのヘルプを追加する方法を説明します。 XMLファイルメソッドを使用してヘルプを追加する方法については、次のWebサイトをご覧ください。 コマンドレットヘルプファイルを作成する方法。
最近PowerShellFunctionExplainedを更新したとき、記事の例を使用して関数を作成しました。 関数を呼び出します、 Get-ItemsBetweenDates。
先ほど、関数を作成すると、PowerShellがGet-Helpが返す情報の一部を追加すると述べました。 自動的に追加される情報の1つは、関数のNAMEとSYNTAXです。
したがって、Get-ItemsBetweenDates関数に対してGet-Helpを実行すると、以下のスクリーンショットに示されている情報が得られます。
Get-Help Get-ItemsBetweenDates
上記のコマンドをPowerShellISEで実行しました。 コマンドがはっきりと見えるように、ISEのスクリプトペインを削除しました。
では、これらの他のビットをどのように追加しますか? よろしくお願いします!
答えは、関数のparamブロックの直前に<##>を追加するのと同じくらい簡単です。 正直言って、<##>を追加するだけではありません。
しかし、真剣に、それは本当に簡単です。 PowerShellでは、<##>を使用してコメントブロックを追加します。 これが、PowerShellスクリプトまたは関数にヘルプを追加するこの方法がコメントベースのヘルプと呼ばれる理由です。
これはプロセスを順を追って説明する実践的なガイドなので、まず、Get-ItemsBetweenDates関数にコメントブロックを追加することから始めましょう。
これが完全な関数コードです。 よく見ると、{を開いた後、関数のパラメーターを定義したことがわかります。
Function Get-ItemsBetweenDates { [CmdletBinding(DefaultParameterSetName="Path")] param( [Parameter(ParameterSetName="Path", Mandatory=$true, Position=0)] [Parameter(ParameterSetName="File", Mandatory=$true, Position=0)] [Parameter(ParameterSetName="Directory", Mandatory=$true, Position=0)] [string[]]$Path, [Parameter(ParameterSetName="Path", Mandatory=$true, Position=1)] [Parameter(ParameterSetName="File", Mandatory=$true, Position=1)] [Parameter(ParameterSetName="Directory", Mandatory=$true, Position=1)] [int]$NumOfDaysFrom, [Parameter(ParameterSetName="Path", Mandatory=$true, Position=2)] [Parameter(ParameterSetName="File", Mandatory=$true, Position=2)] [Parameter(ParameterSetName="Directory", Mandatory=$true, Position=2)] [int]$NumOfDaysTo, [Parameter(ParameterSetName="File", Mandatory=$false, Position=3)] [switch]$File, [Parameter(ParameterSetName="Directory", Mandatory=$false, Position=3)] [switch]$Directory ) BEGIN { $DateFrom = (Get-Date).AddDays(-$NumOfDaysFrom) $DateTo = (Get-Date).AddDays(-$NumOfDaysTo) } PROCESS { IF ($File) { $report = Get-ChildItem $Path -File | Where-Object {($_.LastWriteTime -LE $DateTo) -AND ($_.LastWriteTime -GE $DateFrom)} } ELSEIF ($Directory) { $report = Get-ChildItem $Path -Directory | Where-Object {($_.LastWriteTime -LE $DateTo) -AND ($_.LastWriteTime -GE $DateFrom) } } ELSE{ $report = Get-ChildItem $Path | Where-Object {($_.LastWriteTime -LE $DateTo) -AND ($_.LastWriteTime -GE $DateFrom)} } } END { $report | Select-Object -property ` @{Label=”File/Folder Name”;Expression={$_.Name}}, @{Label=”Modified Date”;Expression={$_.LastWriteTime}} } }
ヘルプ情報を追加するための最初のステップは、開始{の直後にコメントブロックを追加することです。 更新された関数は次のようになります(コメントブロックを展開して、スクリプトでの形式に合わせました)。
Function Get-ItemsBetweenDates { <# #> [CmdletBinding(DefaultParameterSetName="Path")] param( [Parameter(ParameterSetName="Path", Mandatory=$true, Position=0)] [Parameter(ParameterSetName="File", Mandatory=$true, Position=0)] [Parameter(ParameterSetName="Directory", Mandatory=$true, Position=0)] [string[]]$Path, [Parameter(ParameterSetName="Path", Mandatory=$true, Position=1)] [Parameter(ParameterSetName="File", Mandatory=$true, Position=1)] [Parameter(ParameterSetName="Directory", Mandatory=$true, Position=1)] [int]$NumOfDaysFrom, [Parameter(ParameterSetName="Path", Mandatory=$true, Position=2)] [Parameter(ParameterSetName="File", Mandatory=$true, Position=2)] [Parameter(ParameterSetName="Directory", Mandatory=$true, Position=2)] [int]$NumOfDaysTo, [Parameter(ParameterSetName="File", Mandatory=$false, Position=3)] [switch]$File, [Parameter(ParameterSetName="Directory", Mandatory=$false, Position=3)] [switch]$Directory ) BEGIN { $DateFrom = (Get-Date).AddDays(-$NumOfDaysFrom) $DateTo = (Get-Date).AddDays(-$NumOfDaysTo) } PROCESS { IF ($File) { $report = Get-ChildItem $Path -File | Where-Object {($_.LastWriteTime -LE $DateTo) -AND ($_.LastWriteTime -GE $DateFrom)} } ELSEIF ($Directory) { $report = Get-ChildItem $Path -Directory | Where-Object {($_.LastWriteTime -LE $DateTo) -AND ($_.LastWriteTime -GE $DateFrom) } } ELSE{ $report = Get-ChildItem $Path | Where-Object {($_.LastWriteTime -LE $DateTo) -AND ($_.LastWriteTime -GE $DateFrom)} } } END { $report | Select-Object -property ` @{Label=”File/Folder Name”;Expression={$_.Name}}, @{Label=”Modified Date”;Expression={$_.LastWriteTime}} } }
コメントブロックを追加したので、次のステップは、概要、説明、およびその他の関連するヘルプ情報を追加することです。 これらの項目はヘルプキーワードと呼ばれます。
これらのヘルプ情報を追加する方法を説明する前に、以下の最初のサブセクションを使用して、さまざまなヘルプキーワードについて説明します。 次に、2番目のサブセクションでは、それらを関数に追加する方法を学習します。
PowerShell関数のヘルプキーワード
以下の表に、一般的なヘルプキーワードとその意味を示します。 一般的な方法は、すべて大文字でキーワードを追加することです。
ただし、小文字で追加することはできます。 重要なのは、ピリオド(。)の横にタグ名を追加することです。
PowerShell関数のヘルプキーワード | ヘルプキーワードの意味 |
---|---|
.SYNOPSIS | これを使用して、機能を簡単に説明します。 ここで追加した情報は、Get-Help結果のSYNOPSISフィールドに表示されます |
..説明 | ここで、関数の詳細な説明を提供します。 Get-Helpコマンドは、ここで追加した情報を「説明」セクションに表示します |
.PARAMETER | これを使用して、関数で定義した各パラメーターの説明を追加します。 関数にあるパラメーターと同じ数の.PARAMETERタグを含めることができます |
。例 | このタグを使用して、関数の実行方法を示します。 必要な数の例を追加できます。 Get-Helpを実行すると、.EXAMPLEタグの情報が例1、例2などとして返されます。 |
.INPUTS | .INPUTSタグを使用して、関数が入力として受け入れるオブジェクトの.NETFrameworkクラスを一覧表示します。 .INPUTSはいくつでも追加できます。 ここでの情報は、Get-Help結果のINPUTSセクションに表示されます |
.OUTPUTS | .INPUTSと似ていますが、今回はこれを使用して、コマンドの実行時に関数が出力として受け入れるオブジェクトの.NETFrameworkクラスを一覧表示します。 |
。ノート | 上記のキーワードのいずれにも当てはまらないその他の関連情報を追加する必要があると思われる場合は、.NOTESタグを使用してください。 ここで追加された情報は、Get-Help結果のNOTESセクションに表示されます |
.LINKS | このタグを使用して、ユーザーがあなたの機能に関するオンライン情報を見つけることができる関連リンクを追加します。 Get-Helpの結果では、この情報が[関連リンク]セクションに表示されます。 |
PowerShellスクリプトまたは関数にヘルプキーワードを追加する方法
最後のサブセクションでは、一般的なPowerShell関数のヘルプキーワードについて説明しました。 また、各タグの使用方法についても説明しました。
このセクションでは、ヘルプキーワードを追加する方法を説明します。
PowerShell関数のhelpキーワードの構文から始めましょう。
<# .< help keyword> < help content> #>
<##>がコメントブロックであることはすでにご存知でしょう。 「。<ヘルプキーワード>」は、前のサブセクションで説明したキーワードのいずれかを表します。
さらに、「<ヘルプコンテンツ>」はあなたが提供する情報です。
それでは、まず、Get-ItemsBetweenDates関数にSYNOPSISを追加します。 これがそれ自体の概要です…
.SYNOPSIS Get-ItemsBetweenDates returns files and/or folders with modified dates betwwen two dates in a specified path
そして、ここでそれは関数にあります。
Function Get-ItemsBetweenDates { <# .SYNOPSIS Get-ItemsBetweenDates returns files and/or folders with modified dates betwwen two dates in a specified path #> [CmdletBinding(DefaultParameterSetName="Path")] param( [Parameter(ParameterSetName="Path", Mandatory=$true, Position=0)] [Parameter(ParameterSetName="File", Mandatory=$true, Position=0)] [Parameter(ParameterSetName="Directory", Mandatory=$true, Position=0)] [string[]]$Path, [Parameter(ParameterSetName="Path", Mandatory=$true, Position=1)] [Parameter(ParameterSetName="File", Mandatory=$true, Position=1)] [Parameter(ParameterSetName="Directory", Mandatory=$true, Position=1)] [int]$NumOfDaysFrom, [Parameter(ParameterSetName="Path", Mandatory=$true, Position=2)] [Parameter(ParameterSetName="File", Mandatory=$true, Position=2)] [Parameter(ParameterSetName="Directory", Mandatory=$true, Position=2)] [int]$NumOfDaysTo, [Parameter(ParameterSetName="File", Mandatory=$false, Position=3)] [switch]$File, [Parameter(ParameterSetName="Directory", Mandatory=$false, Position=3)] [switch]$Directory ) BEGIN { $DateFrom = (Get-Date).AddDays(-$NumOfDaysFrom) $DateTo = (Get-Date).AddDays(-$NumOfDaysTo) } PROCESS { IF ($File) { $report = Get-ChildItem $Path -File | Where-Object {($_.LastWriteTime -LE $DateTo) -AND ($_.LastWriteTime -GE $DateFrom)} } ELSEIF ($Directory) { $report = Get-ChildItem $Path -Directory | Where-Object {($_.LastWriteTime -LE $DateTo) -AND ($_.LastWriteTime -GE $DateFrom) } } ELSE{ $report = Get-ChildItem $Path | Where-Object {($_.LastWriteTime -LE $DateTo) -AND ($_.LastWriteTime -GE $DateFrom)} } } END { $report | Select-Object -property ` @{Label=”File/Folder Name”;Expression={$_.Name}}, @{Label=”Modified Date”;Expression={$_.LastWriteTime}} } }
「Get-HelpGet-ItemsBetweenDates」を実行すると、概要が含まれます。
以下の最後のスクリプトでは、関連するすべてのヘルプキーワードを追加しました。
Function Get-ItemsBetweenDates { <# .SYNOPSIS Get-ItemsBetweenDates returns files and/or folders with modified dates betwwen two dates in a specified path .DESCRIPTION The Get-ItemsBetweenDates allows you to return files or folders that was modified between two dates. When you run the command without specifying the -File or Directory parameters, Get-ItemsBetweenDates returns all files and folders that meet the modifed date range criteria. .PARAMETER Path Specifies the path to the folder you want Get-ItemsBetweenDates to return items from. This parameter accepts wildcards. See examples for details. .PARAMETER NumOfDaysFrom This will be the earliest number of days from today that you want to return files with modified dates. Specifiy this in numbers, NOT dates. .PARAMETER NumOfDaysTo This will be the latest number of days from today that you want to return files with modified dates. Like the NumOfDaysFrom parameter, specify a number. Note that NumOfDaysTo MUST be smaller than NumOfDaysFrom .PARAMETER File This is a Switch parameter type. By default, Get-ItemBetweenDates returns both files and folders. However, if a user wants this function to return only files, the user will include the File parameter .PARAMETER Directory Like the File parameter, this is also a Switch parameter type. If a user wants this function to return only folders, the user will include Directory. Note that you cannot specify File and Directory parameters in the same command. You can either specify File or Directory in one command. .EXAMPLE If you want to return the files and folders that were modified between 5 days ago and 30 days ago, run the command below: Get-ItemsBetweenDates -Path D:PS-Tutorial* -NumOfDaysFrom 30 -NumOfDaysTo 5 The command displays a result similar to the one below: File/Folder Name Modified Date ---------------- ------------- about_Operators.txt 14/06/2022 14:55:33 .EXAMPLE To display files last updated between two dates, run the commmand below: Get-ItemsBetweenDates -Path D:PS-Tutorial -NumOfDaysFrom 30 -NumOfDaysTo 0 -File. The command will display just files. Here is the result of my command: File/Folder Name Modified Date ---------------- ------------- about_Operators.txt 14/06/2022 14:55:33 NE-Null.txt 18/06/2022 15:55:23 .EXAMPLE To display folders last updated between two dates, run the commmand below: Get-ItemsBetweenDates -Path D:PS-Tutorial -NumOfDaysFrom 30 -NumOfDaysTo 0 -Directory. The command will display just folders. Here is the result of my command: File/Folder Name Modified Date ---------------- ------------- Stanley 18/06/2022 14:31:46 .LINKPowerShell Function (Advanced) Explained With Exampleshttps://www.itechguides.com/powershell-find-files-modified-between-dates #> [CmdletBinding(DefaultParameterSetName="Path")] param( [Parameter(ParameterSetName="Path", Mandatory=$true, Position=0)] [Parameter(ParameterSetName="File", Mandatory=$true, Position=0)] [Parameter(ParameterSetName="Directory", Mandatory=$true, Position=0)] [string[]]$Path, [Parameter(ParameterSetName="Path", Mandatory=$true, Position=1)] [Parameter(ParameterSetName="File", Mandatory=$true, Position=1)] [Parameter(ParameterSetName="Directory", Mandatory=$true, Position=1)] [int]$NumOfDaysFrom, [Parameter(ParameterSetName="Path", Mandatory=$true, Position=2)] [Parameter(ParameterSetName="File", Mandatory=$true, Position=2)] [Parameter(ParameterSetName="Directory", Mandatory=$true, Position=2)] [int]$NumOfDaysTo, [Parameter(ParameterSetName="File", Mandatory=$false, Position=3)] [switch]$File, [Parameter(ParameterSetName="Directory", Mandatory=$false, Position=3)] [switch]$Directory ) BEGIN { $DateFrom = (Get-Date).AddDays(-$NumOfDaysFrom) $DateTo = (Get-Date).AddDays(-$NumOfDaysTo) } PROCESS { IF ($File) { $report = Get-ChildItem $Path -File | Where-Object {($_.LastWriteTime -LE $DateTo) -AND ($_.LastWriteTime -GE $DateFrom)} } ELSEIF ($Directory) { $report = Get-ChildItem $Path -Directory | Where-Object {($_.LastWriteTime -LE $DateTo) -AND ($_.LastWriteTime -GE $DateFrom) } } ELSE{ $report = Get-ChildItem $Path | Where-Object {($_.LastWriteTime -LE $DateTo) -AND ($_.LastWriteTime -GE $DateFrom)} } } END { $report | Select-Object -property ` @{Label=”File/Folder Name”;Expression={$_.Name}}, @{Label=”Modified Date”;Expression={$_.LastWriteTime}} } }
PowerShellスクリプトまたは関数へのヘルプの追加に関するよくある質問
PowerShellコマンドレットを使用してコマンドを実行するための情報を取得するには、Get-Helpコマンドを実行します。 次に、コマンドレットを指定します。
たとえば、Get-Contentコマンドに関するヘルプ情報を取得するには、次のコマンドを実行します。
Get-Help Get-Content
PowerShellスクリプトにヘルプを追加するには、コメントブロック– <##>を入力します。 次に、コメントブロック内に、さまざまなヘルプキーワードを追加します。
たとえば、以下のPowerShellステートメントは、概要、説明、およびパラメーターのヘルプ情報を追加します。
<#
.SYNOPSIS
<ここに概要ヘルプを追加>
<ここに説明ヘルプを追加>
.PARAMETERパス
<ここにPathパラメータに関する情報を追加>
#>
Get-Helpを更新してPowerShellの最新のヘルプ情報を返すには、Update-Helpコマンドを実行します。
ヘルプファイルを手動でダウンロードして提供する場合を除き、Update-Helpコマンドを正常に実行するには、コンピューターがインターネットに接続されている必要があります。
PowerShellでパラメーターを宣言するには、paramブロックから始めます。 paramブロックの基本的な構文は次のとおりです。
param(
)。
次に、paramブロック内で、パラメーターを宣言します
param(
$道
)。
これは、paramブロックの非常に基本的な構文です。 PowerShellパラメーターの詳細については、私の記事「PowerShellパラメーター:構文、型、属性、引数、および例」を参照してください。
PowerShellスクリプトでコードをコメントアウトする方法は2つあります。 1行のコードの前に#を追加できます。
ただし、コードのブロックをコメントアウトする場合は、コメントブロックを使用することをお勧めします。 たとえば、以下のコメントブロック<##>内のすべての情報は、スクリプトでコメント化されます。
<#
このブロックのすべての情報が賞賛されます
#>
PowerShellには、オブジェクトのフィルター処理に使用できる複数のコマンドレットがあります。 フィルタリングに使用できる最も一般的なコマンドレットは、Where-ObjectとSelect-Objectです。
ただし、フィルタリングする対象に応じて、一部のコマンドレットには フィルター パラメータも。 を含むすべてのコマンドレットを一覧表示するには フィルター パラメータ、以下のコマンドを実行します。
Get-Command -ParameterName フィルター
PowerShellスクリプトまたは関数にヘルプを追加することについての私の最終的な考え
PowerShellスクリプトまたは関数にヘルプを追加すると、ユーザーはGet-Help情報を使用してヘルプ情報を表示できます。 コメントベースの方法を使用してヘルプを追加できます。
または、XMLヘルプファイルを作成して、スクリプトまたは関数にヘルプを追加することもできます。
このガイドでは、コメントベースの方法を使用してPowerShellスクリプトまたは関数にヘルプを追加する方法を説明します。
PowerShellスクリプトまたは関数にヘルプを追加するのに役立つことを願っていますか? また、このガイドがわかりやすく、例が明確であることを願っていますか?
このガイドが役に立ち、理解しやすいと感じた場合は、投票してください はい 「この投稿は役に立ちましたか?」 以下の質問。
Alternativekyでは、PowerShellスクリプトにヘルプを追加して、追加した経験を共有できます。 このページの最後にある「LEAVEAREPLY」フォームを使用できます。
最後に、Windows PowerShellハウツーガイドページに移動して、PowerShellスクリプトの旅を続けます。
参考文献とさらなる読み物
- Windows PowerShellパラメーターのヘルプ情報を追加するにはどうすればよいですか?
- コマンドレットヘルプファイルを作成する方法
- PowerShell関数(高度)を例で説明
- コメントベースのヘルプの構文
- PowerShellパラメーター:構文、タイプ、属性、引数、および例
The post PowerShellスクリプトまたは関数にヘルプを追加する方法 appeared first on Gamingsym Japan.