PowerShell – How to Create an Array with PSObject

以前のブログ投稿でお伝えしたように、私は Azure で仮想マシンを作成する対話型の PowerShell スクリプトを作るよう依頼されました。 このブログ記事では、PowerShell 内で、

  • 作成するオブジェクトをユーザーに可視化する
  • PowerShell がその配列のデータを取得して Virtual Machine を作成できるようにするレポート(または配列)を作成した方法を紹介したいと思います。 これにより、PowerShell が作成するオブジェクトを一貫して表示することができます。 オンラインで何かを購入する前の注文の概要のように見てください。

私が作成したいすべての仮想マシンを $VMs に持っていると想像してみましょう。 これは、CSV のインポートであったり、「Read-Host」または Out-GridView でユーザーに詳細を尋ねたりしています。 CSVをインポートする場合、コンテンツはすでに配列で整理されていることでしょう。 しかし、このコードを使えば、簡単にコンテンツを追加して、CSVからのデータとスクリプトからのデータの両方を組み合わせることができる。 例えば、ランダム化されたパスワードや、Azureのサブネットで最初に利用可能なIPアドレスなどです。 私の最終目標は、$Reportに必要なすべてのVirtual Machineの概要を表示し、後でそれらのVMを作成するために使用できるようにすることです。 以下のコードでは、$VMs変数にあるすべてのVMに対してPSObjectを作成します。 PSObjectが作成された後、$Report変数に追加されます。 Report = @()」で、PowerShellに空の配列を作成するように依頼します。 これは、後でコンテンツを追加するために使用できる、空のテーブルと見なしてください。 デプロイが成功または失敗した後、ステータスを $VM.DeploymentStatus.

# Set report variable$Report = @()Foreach ($VM in $VMs) { $PSObject = New-Object PSObject -Property @{ DeploymentName = $VM.resourceGroupName + "-" + (Get-Date -Format "yyyyMMdd-hh-mm-ss") VMName = $VM.vmName Location = $VM.resourceGroupLocation ResourceGroupName = $VM.resourceGroupName AdminPassword = $VM.adminPassword VMSize = $VM.vmSize VirtualNetwork = $VM.virtualNetwork VirtualNetworkRG = $VM.virtualNetwork.ResourceGroupName SubnetName = $VM.subnetName IPAddress = $VM.ipAddress OperatingSystem = $VM.operatingSystem DeploymentStatus = $Null } $Report += $PSObject}# Show the report$Report# Or show it in Table Format# $Report | Format-Table

上記の例は、私にとっては、素敵な配列を作成する最も簡単な方法でした。 お読みいただきありがとうございました。 あなたがそれを有用と感じることを願っています。

コメントを残す

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