PowerShellの関数について
同じコードを何度もコピーして貼り付けるのではなく、PowerShell関数を作成します。
PowerShellスクリプトの作成を最初に開始するときは、モジュール性、再利用性、”ベストプラクティス”などのことを必ずしも心配する必要はありません。”あなたはちょうどあなたの足を濡らしています。 しかし、時間が経つにつれて、あなたはすぐにコードで自分自身を繰り返し始めることに気付くでしょう。
同じことを何度も繰り返す必要性が大きくなり続けていることに気付くでしょう。 同じコードをコピーして貼り付けるだけですが、持続可能ではありません。 代わりに、コード内に小さな”ビルディングブロック”を作成して再利用できるようにしないのはなぜですか? PowerShell関数の作成を開始します。
PowerShellの関数は、オプションの入力と出力を持つコードのグループです。 これは、そのコードを繰り返し複製するのではなく、それを指すだけで、1回または複数回実行するためのコードの束を収集する方法です。PowerShellには2種類の関数があります。 私たちは、”基本的な”機能と高度な機能を持っています。 「基本」関数は、作成できる関数の最も単純な形式です。 彼らは高度な機能が行う派手な組み込み機能のいずれかを持っていません。 これは、functionステートメントの後に中括弧のセットを使用して作成または宣言されます。上記は技術的にはDo-Somethingを呼び出すことで呼び出すことができる関数ですが、それほど多くはありません。 これは、実行するコードを内部に含めていないためです。 それが何かを確実にするために、いくつかの簡単なコードを追加してみましょう。 説明するために、PowerShellコンソールにテキストを書き込むWrite-Hostコマンドを使用します。
関数Do-Something{
Write-Host’私は何かをしました!’
}
PS>Do-Something
私は何かをしました!これで、呼び出されたときに上記を見ることができます。 実行中に関数内のコードに何かを渡したい場合はどうすればよいですか? Parameterブロック内に1つ以上のparameterを作成できます。
function Do-Something{
param(String String)
Write-Host”私は何かをしました-$String!”}
PS>Do-Something-String’thing’
私は何かをしました-事!
Do-Somethingを呼び出した直後に、ダッシュの後にパラメータ名の後に値を追加して、文字列パラメータを指定したことに注意してください。 これは、関数にパラメータを渡すための基本です。
高度な機能
基本的な機能は機能しますが、ほとんどの場合、高度な機能を作成することができます。 高度な機能は、すべての機能を基本機能として含む機能ですが、基本機能にはない組み込み機能も付属しています。 たとえば、PowerShellには、エラー、警告、冗長などと呼ばれるストリームの概念があります。 これらのストリームは、出力をユーザーに正しく表示する上で重要です。 基本的な関数は、これらのストリームを本質的に理解していません。関数の内部で何かが起こった場合にエラーメッセージを表示したいとしましょう。 しかし、我々はまた、特定の時間にのみ何らかの理由でこのエラーメッセージを非表示にする機能をしたいです。 基本的な機能では、これを行うのは面倒です。 しかし、高度な機能では、その機能はすぐに組み込まれています。 高度な関数は、デフォルトでは、Verbose、ErrorAction、WarningVariableなどのようにパラメータを含めなくても、すでにパラメータを持っています。 これらは、いくつかの異なる方法を活用することができます。 エラーの例では、キーワードを使用して関数を”advanced”に変更したとしましょう。
function Do-Something{
param(String String)
Write-Error-Message’Danger,Will Robinson!’
}
PS>Do-Something
Do-Something:Danger,Will Robinson!
At line:1char:1
+Do-Something
+ ~~~~~~~~~~~~
+CategoryInfo:NotSpecified:(:),
WriteErrorException
+FullyQualifiedErrorId:
マイクロソフト。——-コマンド。WriteErrorException,Do-Something
これを実行すると、エラーストリームからのものであることを示す赤いテキストがすぐに表示されます。 今、このエラーを沈黙させてみましょう。
Do-Something-ErrorAction SilentlyContinue
ErrorActionパラメータは、すべての高度な関数に組み込まれているパラメータです。 PowerShellの機能にはもっと多くのものがありますが、時間がかかりませんでした。 高度な機能ができることの完全な内訳については、about_advanced_functionsヘルプトピックを参照してください。