Așa cum v-am mai spus în postarea anterioară de pe blog, mi s-a cerut să construiesc un script PowerShell interactiv pentru crearea de mașini virtuale în Azure. În această postare pe blog, vreau să vă arăt cum am creat un raport (sau array) în PowerShell care:
- Vizualizează utilizatorului obiectele care urmează să fie create
- Permite PowerShell să obțină datele din acel array pentru a crea Mașini virtuale. Astfel, vă asigurați că aveți o vizualizare coerentă a ceea ce PowerShell va crea pentru dvs. Vedeți-o ca pe o privire de ansamblu a comenzii înainte de a cumpăra ceva online.
Să ne imaginăm că am toate Mașinile Virtuale pe care vreau să le creez în $VMs. Acesta poate fi un import al unui CSV, sau poate că am cerut utilizatorului detalii cu „Read-Host” sau Out-GridView. Atunci când importați un CSV, conținutul va fi deja organizat într-o matrice. Dar cu acest cod, puteți adăuga cu ușurință mai mult conținut și puteți combina atât datele dintr-un CSV, cât și cele din script. De exemplu, o parolă randomizată sau prima adresă IP disponibilă într-o subrețea din Azure. Scopul meu final este de a avea o imagine de ansamblu frumoasă a tuturor mașinilor virtuale necesare în $Report, pe care o pot folosi mai târziu pentru a face acele mașini virtuale. Cu codul de mai jos, veți crea un PSObject pentru fiecare VM din variabila $VMs. După ce PSObjectul a fost creat, acesta va fi adăugat la variabila $Report. Cu „$Report = @()” îi cereți lui PowerShell să creeze o matrice goală. Priviți-o ca pe un tabel gol pe care l-ați putea folosi ulterior pentru a-i adăuga conținut. După ce implementarea a reușit sau a eșuat, puteți adăuga starea la $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
Exemplul de mai sus este de departe cel mai simplu mod de a crea un array frumos pentru mine. Vă mulțumim pentru lectură. Sper că îl găsiți și voi util.
.