Jak jsem vám již řekl v předchozím příspěvku na blogu, byl jsem požádán o vytvoření interaktivního skriptu PowerShell pro vytváření virtuálních strojů v Azure. V tomto příspěvku na blogu vám chci ukázat, jak jsem v prostředí PowerShell vytvořil sestavu (nebo pole), která:
- Vizualizuje uživateli objekty, které mají být vytvořeny
- Umožňuje prostředí PowerShell získat data tohoto pole pro vytvoření Virtuálních strojů. Tím zajistíte konzistentní zobrazení toho, co pro vás PowerShell vytvoří. Berte to jako přehled objednávek, než si něco koupíte na internetu.
Představme si, že mám všechny Virtuální stroje, které chci vytvořit, v poli $VMs. Může to být import CSV nebo jsem třeba požádal uživatele o podrobnosti pomocí „Read-Host“ nebo Out-GridView. Při importu CSV bude obsah již uspořádán v poli. Pomocí tohoto kódu do něj však můžete snadno přidat další obsah a kombinovat jak data z CSV, tak ze skriptu. Například náhodné heslo nebo první dostupnou IP adresu v podsíti v Azure. Mým konečným cílem je mít pěkný přehled všech potřebných virtuálních strojů v souboru $Report, který mohu později použít k vytvoření těchto virtuálních strojů. Pomocí níže uvedeného kódu vytvoříte pro každý virtuální počítač v proměnné $VMs objekt PSObject. Po vytvoření PSObject se připojí k proměnné $Report. Příkazem „$Report = @()“ požádáte PowerShell o vytvoření prázdného pole. Vnímejte jej jako prázdnou tabulku, do které můžete později přidat obsah. Po úspěšném nebo neúspěšném nasazení můžete do pole $VM.DeploymentStatus přidat stav.
# 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
Výše uvedený příklad je pro mě zdaleka nejjednodušší způsob vytvoření pěkného pole. Děkuji za přečtení. Doufám, že se vám to také bude hodit.