PowerShell – Hogyan hozzunk létre egy tömböt PSObject segítségével

Amint azt az előző blogbejegyzésemben már említettem, felkértek, hogy készítsek egy interaktív PowerShell-szkriptet virtuális gépek létrehozásához az Azure-ban. Ebben a blogbejegyzésben szeretném megmutatni, hogyan hoztam létre egy jelentést (vagy tömböt) a PowerShellben, amely:

  • megjeleníti a létrehozandó objektumokat a felhasználó számára
  • Elérhetővé teszi a PowerShell számára, hogy a virtuális gépek létrehozásához megkapja a tömb adatait. Ez biztosítja, hogy egységes képet kapjon arról, hogy a PowerShell mit fog létrehozni az Ön számára. Tekintse úgy, mint egy rendelési áttekintést, mielőtt online vásárolna valamit.

Tegyük fel, hogy a $VMs-ben van az összes létrehozni kívánt Virtuális gépem. Ez lehet egy CSV importálása, vagy esetleg “Read-Host” vagy Out-GridView segítségével kértem a felhasználótól részleteket. Egy CSV importálásakor a tartalom már egy tömbbe lesz rendezve. De ezzel a kóddal könnyen hozzáadhat további tartalmat, és kombinálhatja a CSV-ből és a szkriptből származó adatokat. Például egy véletlenszerű jelszó vagy az Azure-ban egy alhálózat első elérhető IP-címe. A végcélom az, hogy a $Reportban egy szép áttekintést kapjak az összes szükséges virtuális gépről, amelyet később felhasználhatok az adott VM-ek létrehozásához. Az alábbi kóddal a $VMs változóban lévő minden VM-hez létrehoz egy PSObjectet. A PSObject létrehozása után a PSObject a $Report változóhoz lesz csatolva. A “$Report = @()” paranccsal arra kérjük a PowerShellt, hogy hozzon létre egy üres tömböt. Tekintsünk rá úgy, mint egy üres táblázatra, amelyhez később tartalmat adhatunk hozzá. Miután a telepítés sikeres vagy sikertelen volt, hozzáadhatod az állapotot a $VM.DeploymentStatus-hoz.

# 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

A fenti példa számomra messze a legegyszerűbb módja egy szép tömb létrehozásának. Köszönöm az olvasást. Remélem, te is hasznosnak találod.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.