PowerShell ユーザー向けのユーザー機能

こんにちは かなり頻繁にあなたの仕事では、独立して書かれた関数を使用し、異なるスクリプト間でコードの断片をドラッグする必要があります。 HabréにはMroffからのコードの再利用に関するかなり良い記事が既にありますが、もう少し進んで、ドキュメントを作成し、何らかの方法で関数を説明する必要がありました。 判明したように、検索は主に関数の一般的な構造に関する情報のみを提供し、それ以上のものは提供しませんでした。 忍耐が報われ、私は受け取った情報を共有することにしました。 Catへようこそ。ここでは、子孫や同僚のために情報を機能に導入する方法を学びます。



最初に、PowerShellの標準関数構造を見てみましょう。 次のようになります



Function TestPath ([String]$Path) { Return(Test-Path $Path) }
      
      





一般に、他の言語ではTestPathという名前を付けたため、複雑ではありません。かっこ内に変数Path $が渡され、カンマで区切られ、関数の本体で必要なアクションを実行し、必要に応じてReturn()値を返しました。 しかし、いくつかの変数を使用する必要がある場合はどうでしょうか? 常に複数の方法があります-常にニーモニックコードを提供したり、変数の説明を作成したりするために、これがどのように行われるかを見てみましょう。



 Function TestPath { PARAM ( [PARAMETER(Mandatory=$True,Position=0,HelpMessage = "   ",ParameterSetName='Path')]$Path ) Return(Test-Path $Path) }
      
      





困難はありませんが、私たちの生活を簡素化する追加のパラメーターが登場しました。



必須-True必須とFalseオプションの2つの値を取ります。

HelpMessage-変数のヘルプ。

ParameterSetName-これらのパラメーターが関連する変数の名前。

位置-関数を呼び出すときの変数の位置。


これで説明のある変数ができたので、すべてがうまくいくように思えますが、それを見つけるためには次のコードを実行する必要があります。



 ((Get-Command TestPath).ParameterSets.Parameters | Where-Object Name -eq Path).HelpMessage
      
      





PowerShellは、1行で回答します。チェックされるリソースへのパスです。



ある程度便利ですが、PowerShellでの作業に慣れている場合は、関数の使用例や渡す必要のある変数に関する詳細情報を表示するGet-Helpコマンドを知っています。



タスクを少し複雑にして、Get-Helpのリクエストで情報が完全に表示される関数を準備しましょう。



 Function WriteToLog { <# .SYNOPSIS        . .DESCRIPTION            PowerShell .EXAMPLE #WriteToLog -Str "           C:\Log\log.txt" -FileName 'C:\Log\log.txt' -Color Red .EXAMPLE #WriteToLog -Str "         (White)    C:\Log\log.txt" -FileName 'C:\Log\log.txt' .PARAMETER Str ,    ( ) .PARAMETER FileName    ( ) .PARAMETER Color      PowerShell (     (White)) #> param ( [PARAMETER(Mandatory=$True,Position=0)][String]$Str, [PARAMETER(Mandatory=$True,Position=1)][String]$FileName, [PARAMETER(Mandatory=$False,Position=2)][String]$Color='White' ) Write-Host $Str -ForegroundColor $Color If ((Test-Path $FileName) -eq $True) { Add-Content -Path $FileName -Value $Str } Else { Set-Content -Path $FileName -Value $Str } }
      
      





このコードの実行後、Get-Help 'WriteToLog' -ShowWindowコマンドは次のウィンドウを表示します。









書いたものを見てみましょう:



<##>-このブロックには、PowerShellヘルプのパラメーターが含まれています。

.SYNOPSIS-関数の簡単な説明のブロック

.DESCRIPTION-関数の詳細な説明のブロック

.EXAMPLE-関数の使用例のブロック。いくつかあります

.PARAMETRパラメーターの名前は変数を記述するためのブロックであり、各ブロックには独自のブロックがあります。


お気づきかもしれませんが、テキストコメントはセクションのキー名の後の次の行から始まり、複数行にすることができます。 コメントの終わりは、終了タグ#>または次のブロックです。



param()は、変数の順序と、関数を呼び出すときにパラメーターを渡す必要性を示した変数を記述するためのブロックです。 $ Color変数では、デフォルト値を「White」に設定します。



これで、すべてのユーザー定義関数を集中的に使用できるようになり、どのパラメーターが何に責任を負うのか、またこの変数またはその変数が使用するデータ型を覚える必要がなくなりました。



最後まで読んでくれてありがとう。



All Articles