PowerShell – Arrayn luominen PSObjectin avulla

Kuten kerroin edellisessä blogikirjoituksessani, minua pyydettiin rakentamaan interaktiivinen PowerShell-skripti virtuaalikoneiden luomista varten Azuressa. Tässä blogikirjoituksessa haluan näyttää, miten olen luonut PowerShellissä raportin (tai array), joka:

  • Visualisoi luotavat objektit käyttäjälle
  • Mahdollistaa PowerShellin hakea tuon array:n tiedot Virtuaalikoneiden luomista varten. Näin varmistetaan, että sinulla on yhdenmukainen näkymä siitä, mitä PowerShell luo sinulle. Ajattele sitä tilauksen yleiskatsauksena, ennen kuin ostat jotain verkosta.

Kuvitellaan, että minulla on $VMs:ssä kaikki Virtual Machines, jotka haluan luoda. Tämä voi olla CSV:n tuonti, tai ehkä olen kysynyt käyttäjältä yksityiskohtia ”Read-Host” tai Out-GridView:n avulla. Kun tuot CSV-tiedostoa, sisältö on jo järjestetty arrayyn. Tämän koodin avulla voit kuitenkin helposti lisätä siihen lisää sisältöä ja yhdistää sekä CSV:stä että skriptistä saadut tiedot. Esimerkiksi satunnaistettu salasana tai Azuren aliverkon ensimmäinen käytettävissä oleva IP-osoite. Lopputavoitteeni on saada mukava yleiskuva kaikista tarvittavista virtuaalikoneista $Reportissa, jota voin myöhemmin käyttää näiden VM:ien tekemiseen. Alla olevalla koodilla luot PSObjectin jokaiselle VM:lle $VMs-muuttujassa. Kun PSObject on luotu, se liitetään $Report-muuttujaan. Komennolla ”$Report = @()” pyydät PowerShelliä luomaan tyhjän joukon. Katso sitä tyhjänä taulukkona, johon voit myöhemmin lisätä sisältöä. Kun käyttöönotto on onnistunut tai epäonnistunut, voit lisätä tilan kohtaan $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

Yllä oleva esimerkki on minulle ylivoimaisesti helpoin tapa luoda mukava array. Kiitos lukemisesta. Toivottavasti siitä on sinullekin hyötyä.

Vastaa

Sähköpostiosoitettasi ei julkaista.