PowerShellの基本。 カスタムオブジェクト

Windows PowerShell は、Microsoft .NET Framework に基づくオブジェクト指向スクリプトをサポートしたコマンドシェル環境です。 その中心は PowerShell コマンドレットであり、特定のアクションを実行し、その過程で .NET オブジェクトを返す軽量なコマンドです。 PowerShellでは、コマンドレットを使用してさまざまなシステムにアクセスし、それらのシステムに対して多数のタスクを実行することができます。 しかし、特定のアクションを実行するには、コマンドレットだけでは必ずしも十分ではありません。 これらのアクションを実行するには、多くの場合、.NET クラスをベースにした独自のオブジェクトを作成する必要があります。 作成できる.NETオブジェクトの種類の1つに、カスタムオブジェクトがあります。 カスタム・オブジェクトでは、そのオブジェクトに割り当てるデータの種類や実行可能なアクションを定義することができます。 カスタムオブジェクトの構築方法を理解した後は、PowerShell のすでに大きな範囲を拡張できるスクリプトを構築するための強力なツールを手に入れることができます。

.NET Framework とオブジェクト指向プログラミングは、ここでの範囲をはるかに超える複雑なトピックであることに留意してください。 PowerShell のオブジェクト指向の性質を十分に理解するには、これらの概念について少なくとも基本的な理解を持っていることが役に立ちます。 .NET Framework の詳細については、MSDN の記事 “Overview of the .NET Framework” を参照してください。 オブジェクト指向プログラミングの入門については、MSDN記事「オブジェクト指向プログラミング (C# および Visual Basic)」を参照してください。

カスタムオブジェクトの作成

PowerShellでカスタムオブジェクトを作成するには、まずNew-Objectコマンドレットを使って初期オブジェクトを構築する必要があります。 このコマンドレットを使用すると、さまざまなクラスから .NET または COM オブジェクトを作成することができます。 カスタム オブジェクトは、Object または PSObject .NET クラスのいずれかをベースにした、特別なタイプの .NET オブジェクトです。 初期オブジェクトを作成する際に、両者の間に違いはありません。 しかし、Object クラスに基づくオブジェクトにプロパティを追加する際に発生する可能性のある問題のため、一般的には PSObject クラスが好まれます。

PSObject クラスに基づくオブジェクトを作成するには、-TypeName パラメーター付きの New-Object コマンドレットを使用し、PSObject クラスをパラメーター値として次のように指定します:

$system = New-Object -TypeName PSObject

このコマンドを実行すると、PSCustomObject オブジェクトを生成して $system 変数に代入します。 多くの場合、オブジェクトを変数に代入して、そのオブジェクトのメンバを簡単に操作できるようにしたいと思うでしょう。 PowerShell でオブジェクトを操作する場合、プロパティとメソッドの 2 種類のメンバーを使用することになるでしょう。 プロパティは、オブジェクトの特定の側面を記述します。 たとえば、FileInfo .NET クラスのメンバーの 1 つは Length プロパティで、ファイルのサイズをバイト単位で提供します。 このクラスに基づいてFileInfoオブジェクトを作成すると、Lengthプロパティを使用して、そのオブジェクトに関連付けられたファイルのサイズにアクセスすることができます。 メソッドは、そのオブジェクトに関連するアクションを実行します。 たとえば、FileInfo クラスは Delete メソッドを含んでおり、これを使用してオブジェクトによって表されるファイルを削除できます。

オブジェクトのメンバーを簡単に識別できるようになると、そのオブジェクトでの作業が容易になります。 オブジェクトを構成するメンバーのリストを取得するために、Get-Member コマンドレットを使用することができます。 たとえば、$system 変数に割り当てられた新しいオブジェクトのメンバーを確認するには、$system 変数を Get-Member コマンドレットにパイプします:

$system | Get-Member

図 1 が示すように、作成したオブジェクトは System.Management.Automation.PSCustomObject クラスに基づいており、少数のメンバーのみを含み、そのすべてがメソッドになっています。

Figure 1: 新しいオブジェクトのメンバー リスト

メンバーを追加する方法を説明する前に、多くの .NET クラスと同様に、PSCustomObject クラスにも memberset や codeproperty などさまざまなタイプの多数の隠しメンバーが含まれていることを補足します。 これらのメンバーは、Get-Memberコマンドレットを呼び出す際に-Forceパラメータを指定することで表示することができます。 隠しメンバーについての説明はここでは行いませんが、PowerShell オブジェクトを最大限に活用するために、PSCustomObject クラスやその他の .NET クラスで利用可能な隠しメンバーを調べることは、ある時点で役に立つと思われます。 カスタム オブジェクトには、いくつかの異なるタイプのメンバーを追加することができます。 この例では、NoteProperty および ScriptMethod メンバを追加します。 NoteProperty メンバは通常のプロパティと似ており、ScriptMethod メンバは通常のメソッドとよく似ています。 カスタム オブジェクトには通常のプロパティやメソッドを追加できないため、NoteProperty と ScriptMethod を使用することになります。 (カスタム オブジェクトでサポートされているメンバーについては、PowerShell TechNet トピック「Add-Member」を参照してください。)

まず、$system オブジェクトにいくつかの NoteProperty メンバーを追加することから始めましょう。 メンバーを追加するには、Add-Member コマンドレットを使用して、プロパティ名と値を定義します。 たとえば、PowerShell に組み込まれている Windows Management Instrumentation (WMI) 機能で取得したデータに基づいてノート プロパティを追加したいとします。 (WMIは、Windows OSのデータや操作を管理するためのインフラストラクチャを提供します)。 WMIオブジェクトモデルには、さまざまな管理操作をサポートする多数のクラスが含まれています。 たとえば、Win32_OperatingSystem クラスは、コンピューターにインストールされている OS の名前やその OS に適用されている最新のサービスパックなどの情報へのアクセスを提供します。

WMI オブジェクトを作成するには、Get-WmiObject コマンドレットを使用し、目的のクラスを指定します。 たとえば、Win32_OperatingSystem WMI オブジェクトを作成し、$os 変数に代入するには、次のコードを使用します:

$os = Get-WmiObject Win32_OperatingSystem

このケースでは、ローカル コンピューターからシステム情報を取得していますが、WMI の優れた点は、リモートの Windows コンピューターにもアクセスして管理できることです。 この方法でオブジェクトを変数に代入すると、その時点のデータがロックされます。 たとえば、$os 変数を作成した後に新しいサービスパックが OS に適用された場合、オブジェクトの CSDVersion プロパティは、オブジェクトが元のデータに基づいて作成されていたため、変更を反映しません。

$os 変数を定義した後、2 つの Add-Member コマンドを指定する必要があります。 各コマンドは 4 つのパラメーターを取ります。

  • -InputObject. 新しいノートプロパティを受け取るオブジェクトを特定するために、-InputObject パラメータを使用します。 この場合、$systemオブジェクトを指定する必要があります。
  • -MemberType。 MemberType パラメータは作成するメンバーのタイプを示すので、NoteProperty.
  • -Name を指定する必要があります。 Nameパラメータを使用して、新しいメンバの名前を指定します。 この例では、最初のメンバにOperatingSystem、2番目のメンバにServicePack.
  • -Valueと名前を付けてみます。 このパラメータは、メンバの値を指定します。 1 つ目のノート・プロパティでは、OS の名前を返すために $os.Caption を指定する必要があります。

2 つの Add-Member コマンドは次のようになります:

Add-Member -InputObject $system -MemberType NoteProperty ` -Name OperatingSystem -Value $os.CaptionAdd-Member -InputObject $system -MemberType NoteProperty ` -Name ServicePack -Value $os.CSDVersion

各 Add-Member コマンドを 2 行に分割したことに注意してください。 PowerShell プロセッサがコマンドを完了するために次の行に進むことを認識できるように、それぞれの最初の行の終わりに、バック ティック (`) を付けました。

Add-Member コマンドを実行した後、$system 変数を呼び出してその内容を表示できます。

$system

図 2 はサンプル結果です。

Figure 2: $system 変数の内容

また、$system 変数を使用して個々のメンバーを呼び出すことができます。 単に変数名、ピリオド、そしてメンバー名を指定するだけでよい。 たとえば、次のコマンドは、OperatingSystem ノート プロパティの現在の値を返します。

$system.OperatingSystem

カスタム オブジェクトを作成する利点の 1 つは、値が特定の文字列であるノート プロパティと同様に、異なるソースから取得したデータに基づくノート プロパティを作成できることです。 たとえば、リスト 1 のコードを見てみましょう。$system オブジェクトに 3 つの新しいノート プロパティを追加しています。

$mem = Get-WmiObject Win32_PhysicalMemory$disk = Get-WmiObject Win32_DiskDriveAdd-Member -InputObject $system -MemberType NoteProperty ` -Name PhysicalMemory ` -Value (("{0:N2}" -f ($mem.Capacity/1GB)) + ' GB')Add-Member -InputObject $system -MemberType NoteProperty ` -Name DiskSize ` -Value (("{0:N2}" -f ($disk.Size/1GB)) + ' GB')Add-Member -InputObject $system -MemberType NoteProperty ` -Name Owner -Value "janetp"

リスト 1 の要素のほとんどは、前の例で見たとおりです。 ただし、このコードでは Win32_PhysicalMemory クラスのインスタンスが作成され、$mem 変数に割り当てられ、Win32_DiskDrive クラスのインスタンスは $disk 変数に割り当てられていることに注目してください。 3003>

最初の Add-Member コマンドは、ターゲット システム上のメモリの容量を提供する $mem.Capacity プロパティからデータを取得します。 ただし、この場合、-Value パラメータは前の例で見たものより少し複雑になっています。 まず、コマンドは”{0:N2}”の後に-fを指定していますが、これは出力される数値をフォーマットするための.NETの構文です。 基本的に、これは小数点以下2桁で数値を返すことを指定する。 フォーマット命令の後には、Capacity値を1GBで割る短い式($mem.Capacity/1GB)が続きます。 Capacity 値は、メモリのサイズをバイト単位で提供します。 PowerShellでは、1GBで割るだけで簡単にバイトをギガバイトに変換できます。 最後に、コマンドは出力に文字列「GB」(スペースを含む)をタグ付けし、全体を括弧で囲みます。

2 番目の Add-Member コマンドは、コンピュータのハード ディスクのサイズを返すために同じロジックに従っています。 これは、$disk.Size プロパティを使用してサイズをバイトで返し、それをギガバイトに変換します。

3番目の Add-Member コマンドは、Owner という名前のノート プロパティを追加して、文字列値 janetp を割り当てます。 この場合、「owner」は、プライマリ ユーザー、ラスト ユーザー、管理者、またはプロパティに課したい任意の意味を持つことができます。 3003>

カスタム オブジェクトに 3 つのメンバーを追加した後、もう一度 $system 変数を呼び出すことができます。 3003>

Figure 3: Note Properties Added with the Add-Member Cmdlet

これで、3 つの異なる WMI オブジェクトから得られたデータを含む 1 つのオブジェクトができました。 オブジェクトは、文字列値に基づく Owner プロパティも含んでいます。

$system.Owner

期待どおり、コマンドは値 janetp を返します。 しかし、このようにプロパティに新しい値を代入することで、その値を別の値に変更することができます:

$system.Owner = "rogert"

この場合、値 rogert が Owner note プロパティに代入されています。 PowerShell で実行できる多くのタスクと同様に、カスタム オブジェクトにメンバーを追加するにはさまざまな方法があります。 例えば、PowerShell 3.0では、ハッシュテーブルを作成し、そのハッシュをNew-Objectコマンドに渡すことができます。 リスト 2 のコードは、同じ 5 つのノート プロパティを作成しますが、ハッシュ テーブルを使用してメンバー名と値を渡します。

$info = @{ "OperatingSystem" = $os.Caption; "ServicePack" = $os.CSDVersion; "PhysicalMemory" = (("{0:N2}" -f ($mem.Capacity/1GB)) + ' GB'); "DiskSize" = (("{0:N2}" -f ($disk.Size/1GB)) + ' GB'); "Owner" = 'janetp'}$system = New-Object -TypeName PSObject -Property $info$system

このコードではまず、ノート プロパティに対応する 5 つのプロパティ/値のペアを定義するハッシュ テーブルを作成します。 コードが示すように、プロパティと値のペアをセミコロンで区切る必要があります。 また、5つのプロパティ/値のペアのセットを中括弧で囲み、開始括弧の前にアット(@)記号を付ける必要があります。 最後に、ハッシュ テーブルを $info 変数に代入します。

ハッシュ テーブルを定義した後、コードは New-Object コマンドレットを使用して、PSObject クラスに基づくオブジェクトを作成し、$system 変数に代入しています。

最後に、コードは $system 変数を呼び出し、図 4 のような結果を返します。 プロパティがオブジェクトに追加された順序に注目してください。 ハッシュ・テーブルを使用してノート・プロパティを追加する場合の問題の1つは、その順序を制御できないことです。

Figure 4: ハッシュ テーブルで作成されたノート プロパティ

Adding Methods to a Custom Object

Now to see how easy to add properties, access their values, and change those values, let’s move on the methods.

たとえば、リスト 3 のコードは、現在の日付と時刻を取得し、元のフォーマットと協定世界時 (UTC) 値の両方でそれらを返すメソッドを作成します。 その値には、日付と時刻の情報を返すのに必要な式が含まれています。 ただし、Add-Member コマンドに渡すには、値をスクリプトブロックとして定義する必要があります。 これを行うには、値の内容を中括弧で囲みます。 PowerShell はその後、現在の形式の値を ScriptBlock オブジェクトとして変数に割り当てます。

リスト 3 では、メソッドの値には 2 つの式が含まれています。 最初の式は現在の日付と時刻を返し、2 番目の式は UTC バージョンを返します。 最初の式は、Get-Date コマンドレットを使用して現在の日付と時刻を取得し、それを $a 変数に代入することで開始します。 Get-Date コマンドレットを呼び出す際、-Format パラメータに値 F を含める必要があることに注意してください。これにより、PowerShell はタイムスタンプを Monday, August 19, 2013 12:28:25 PM のように完全な日付と時間の形式で表示するようになります。 次に、文字列「Local: 「3003>

2 番目の式では、再び Get-Date コマンドレットを使用して現在の日付と時刻を返し、それを $b 変数に代入します。 次に、変数の ToUniversalTime メソッドを使用して日付と時刻を UTC 値として返し、DateTime プロパティを指定して正しい形式を返します。

この時点で $method 変数を呼び出すと、入力されたとおりに 2 つの式を文字列として返します。 変数値をスクリプトブロックとして定義したため、$method変数に代入されてもコマンドは処理されません。 代わりに、$method 変数は ScriptBlock オブジェクトとして作成され、GetType メソッドを使用して変数の型を確認できます:

$method.GetType()

スクリプト ブロックを操作するには、$method 変数を定義した後に、$system オブジェクトのメンバーとしてメソッドを追加する必要があります。 これを行うには、型として ScriptMethod を、名前として GetUTC を、値として $method 変数を指定する Add-Member コマンドを作成します。

リスト 3 のコードを実行した後、$system 変数を使用して、プロパティを呼び出したのとほとんど同じ方法で GetUTC メソッドを呼び出すことができます。

Figure 5: GetUTC() メソッドのサンプル結果

実際の生活では、おそらくより強力なメソッドを作成したいと思うことでしょう。 たとえば、$system オブジェクトは、そのスクリプト メソッドに WMI 管理タスクを組み込むことができます。 その場合、コマンドが正確に実行されていることを確認するために、そのメソッドを完全にテストする必要があります。 PowerShell と WMI はどちらも強力なツールなので、Windows コンピューターを管理する際には注意して使用する必要があります。

カスタム オブジェクトを配列に追加する

カスタム オブジェクトは、1 回使用したら捨てられるスタンドアロン オブジェクトに限定されません。 これらのオブジェクトをオブジェクト配列に追加し、その配列を介してオブジェクトにアクセスすることができます。 たとえば、複数のコンピュータから取得した情報を操作する場合を考えてみましょう。 その情報には、それらのシステムで利用可能なメモリや論理ドライブの詳細が含まれているかもしれません。 PowerShellでは、これらの情報を有意義に扱うことができます。 PowerShell のオブジェクト指向の性質により、その情報をオブジェクトに入れることが、そのデータを扱う最も簡単な方法であることがよくあります。 この議論では、さまざまなコンピューターに関する情報を収集するために使用されるアプローチは重要ではありません。 たとえば、PowerShell で foreach ループを設定し、WMI を使用してさまざまなワークステーションから情報を取得することができます。 使用する方法に関係なく、簡潔にするために、図 6 に示すデータを含むカンマ区切りのテキスト ファイルに情報を収集したと仮定します。

Figure 6: Collected WMI Data

テキスト ファイルは、各システムの論理ドライブに対するヘッダー行と行を含んでいます。 たとえば、データの最初の行は、コンピューター ws01 上の C 論理ドライブの詳細を提供します。 この論理ドライブの容量は500GBで、225GBの空き領域があります。 また、システムには4GBのメモリがあります。 2行目は、同じコンピュータに D 論理ドライブもあり、C ドライブと同じ容量で、空き領域が 320GB あることを示しています。

ゴールは、データの各行をそれ自身のカスタムオブジェクトに変換し、それらのオブジェクトを配列に追加することです。 その後、データを他のPowerShellコマンドにパイプすることで、配列内のオブジェクトに対してアクションを起こすことができます。 リスト 4 のコードでは、空の配列を定義し、テキスト ファイルからデータをインポートし、foreach ループを使用してオブジェクトを作成し、配列に追加します。

$SystemInfo = @()$SourceData = Import-CSV C:\DataFiles\SourceData.txtforeach ($source in $SourceData){ $system = New-Object -TypeName PSObject $system | Add-Member -Type NoteProperty ` -Name Computer -Value $source.Computer $system | Add-Member -Type NoteProperty ` -Name DeviceID -Value $source.DeviceID $system | Add-Member -Type NoteProperty ` -Name DriveSize -Value ($source.DriveSize) $system | Add-Member -Type NoteProperty ` -Name UsedSpace ` -Value ($source.DriveSize - $Source.FreeSpace) $system | Add-Member -Type NoteProperty ` -Name FreeSpace -Value ($source.FreeSpace) $SystemInfo += $system}

ご覧のように、最初のステップは空の配列 (@()) を作成して、$SystemInfo 変数に代入することです。 最終的には、この配列にカスタム オブジェクトを追加します。

次に、Import-CSV コマンドレットを使用して、データを $SourceData 変数にインポートします。 この演習では、テキストファイルをSourceData.txtと名付け、C:㈳DataFilesフォルダーに保存しています。 Import-CSVコマンドレットは、各行を独自のオブジェクトとして取得し、$SourceDataに保存します。 この時点で、その変数を使用してデータにアクセスできますが、オブジェクトに含まれるメンバーを制御できず、メンバーを追加することもできません。

次に、テキスト ファイルの各行に対してカスタム オブジェクトを作成できる foreach ループを作成することです。 foreach 条件 ($source in $SourceData) は、コードが foreach ループを反復するときに $SourceData の各行が $source 変数に代入されるように指定します。 foreachスクリプトブロック内で定義されたロジック (中括弧で囲まれています) は、各行に対して1回ずつ実行され、各反復中に異なる$sourceオブジェクトが適用されます。 (foreach ループの作成の詳細については、PowerShell TechNet の about_ForEach トピックを参照してください。)

foreach スクリプト ブロックを詳細に見ていきましょう。 最初のコマンドは、以前の例で見たように、初期オブジェクトを作成し、それを $system 変数に保存します。 次に、$system 変数は、最初のノート プロパティを作成するために、Add-Member コマンドにパイプされます。 これは、以前使用したものと少し異なる形式です。 Add-Member コマンドに -InputObject パラメータを含める代わりに、単に $system をコマンドにパイプします。 これは、以前のAdd-Memberコマンドの例で見たのと同じ結果を達成します。 Add-Member コマンドの値として、$source 変数を使用して、ソース データ内の Computer フィールドに対応する Computer プロパティを呼び出しています。 2番目のAdd-Memberコマンドは、DeviceIDプロパティからデータを取得することを除いて、同じように動作します。 Memory プロパティが含まれていないことに注意してください。 カスタム オブジェクトを作成している場合、特定のプロパティを省略したり、異なる順序で配置したりできます。

3 番目の Add-Member コマンドは、DriveSize プロパティにアクセスしていることを除いて、最初の 2 つとほとんど同じ方法で動作します。 このデータを文字列ではなく数値として扱いたい場合があるため、このコマンドではデータを明示的に数値に変換しています。 これは、int データ型が必要であることを示すためにプロパティ名を前に置き、プロパティ式全体を括弧で囲むことで実現します。

4 番目の Add-Member コマンドは、少し異なることを行います。 これは、DriveSize 値から FreeSpace 値を減算して、使用されているスペースの量を決定する計算メンバを作成します。 ここでも、プロパティ名は前に置かれ、式全体は括弧で囲まれています。

foreach スクリプト ブロックの最後のコマンドは、現在の $system オブジェクトを $SystemInfo 配列に追加します。 新しい $system オブジェクトがループの各反復で追加され、何も上書きされないことを確認するために += 演算子が使用されていることに注目してください。

リスト 4 のコードを実行した後、変数を呼び出してその内容を表示できます。 図 7 は、$SystemInfo 配列に現在格納されているデータの一部のリストです。

Figure 7: Data Stored in the $SystemInfo Array

特に、配列内の最初の 7 オブジェクトに対するデータを示していますが、これは元のテキスト ファイル内のデータの最初の 7 行に対応するものです。 各グループは、$SystemInfo 配列に追加されたオブジェクトの 1 つを表しています。 3003>

$SystemInfo.GetType()

このコマンドが System.Array の BaseType を返す場合、$SystemInfo 変数はカスタム オブジェクトを保持できるオブジェクト配列であることを確認できます。 そして、この変数を使用して、適切と思われる方法でデータを操作することができます。 たとえば、この変数を Sort-Object コマンドにパイプし、FreeSpace 値に基づいてデータを降順に並べ替えることができます:

$SystemInfo | Sort FreeSpace -Descending

この場合、コマンドは Sort エイリアスを使用して Sort-Object コマンドレットを参照し、FreeSpace プロパティと -Descending パラメータを含めます。 図8でわかるように、オブジェクトはFreeSpaceの値に従ってリストアップされ、最も大きな空き容量が最初にリストアップされるようになりました。 3003>

Figure 8: Data Sorted by the Amount of Free Space

また、複数の列に基づいてデータを並べ替えることも可能です。 たとえば、データを最初にコンピュータのプロパティで、次に空き領域のプロパティで降順に並べ替えることができます。

$SystemInfo | Sort Computer, FreeSpace -Descending

図 9 が示すように、結果は大きく変わりました。

Figure 9: Computer Name と FreeSpace の量で降順に並べられたデータ

この方法で列を並べた結果の 1 つは、Computer 値と FreeSpace 値が降順に並べられるということです。 Sort-Objectコマンドレットは、1つの列を昇順に、別の列を降順に簡単にソートすることができません。 降順]パラメータを指定すると、すべてのデータがその順序でソートされます。 しかし、各プロパティに対して、それらの値のソート方法を指定する式を作成することで、この制限を回避することができます。 たとえば、次のコマンドでは、まず Computer プロパティで昇順に、次に FreeSpace プロパティで降順にソートします。

$SystemInfo | Sort ` @{Expression="Computer"; Descending=$false}, @{Expression="FreeSpace"; Descending=$true}

最初の Sort-Object 式は、Expression プロパティを Computer に、Descending プロパティを $false に設定します。 2 番目の式は、Expression プロパティを FreeSpace に、Descending プロパティを $true に設定します ($true と $false 変数は、組み込みシステム変数で、それぞれ 1 と 0 の真偽ブール値を提供します)。 次に、各式を中括弧で囲み、各開放括弧の前にアット (@) 記号を付けなければなりません。 3003>

Figure 10: Data Sorted by the Computer Name in Ascending Order and the Amount of Free Space in Descending Order

これはソートの話題としては過剰に思えるかもしれませんが、配列でオブジェクトを扱う柔軟性を指摘しているのです。 また、Sort-Object コマンドレットに限定されないことは確かです。 たとえば、次のコマンドは、変数 $SystemInfo を Where-Object コマンドレットにパイプします:

$SystemInfo | Where DriveSize -gt 250 | Sort FreeSpace -Descending

この場合、コマンドは Where エイリアスを使用して Where-Object コマンドレットを参照しています。 さらに、DriveSizeの値が250より大きくないと結果に含まれないことを指定しています。 (PowerShell では、-gt は greater than 演算子として使用されます。) これらの条件を満たす結果は、データが適切な順序で表示されるように Sort-Object コマンドレットにパイプされます。 3003>

カスタム オブジェクトを最大限に活用する

ほとんどの場合、PowerShell でカスタム オブジェクトを作成することは、かなり簡単なプロセスです。 複雑さが伴うとすれば、一般に、ノート プロパティまたはスクリプト メソッドに定義する値式に起因します。 これらの例の式は、PowerShell で作成できる式の種類と比較すると、比較的単純なものです。 それでも、ここで見たものは、カスタムオブジェクトを作成するために必要な基礎を提供するものです。 効果的に使用すれば、個々のオブジェクトの作成、配列への追加、または他の方法での使用など、PowerShellスクリプトの強力な構成要素となります。 例えば、PowerShellプロファイル内にカスタムオブジェクトを作成し、新しいセッションを開始するたびに利用できるようにすることができます。 カスタムオブジェクトをスクリプトでどのように使用するかは、あなた次第です。 Windows PowerShell でのカスタムオブジェクトの作成に関する詳細については、Bill Stewart の「Creating Custom Objects in Windows PowerShell」

を参照してください。

コメントを残す

メールアドレスが公開されることはありません。