PowerShell – Jak stworzyć tablicę za pomocą PSObject

Jak już mówiłem w moim poprzednim wpisie na blogu, zostałem poproszony o stworzenie interaktywnego skryptu PowerShell do tworzenia maszyn wirtualnych w Azure. W tym wpisie na blogu chcę pokazać, jak stworzyłem raport (lub tablicę) w PowerShell, który:

  • Wizualizuje obiekty, które mają być utworzone dla użytkownika
  • Pozwala PowerShellowi uzyskać dane z tej tablicy, aby utworzyć Maszyny wirtualne. To upewnia się, że masz spójny widok tego, co PowerShell utworzy dla ciebie. Zobacz to jak przegląd zamówienia zanim kupisz coś online.

Wyobraźmy sobie, że mam wszystkie Maszyny Wirtualne, które chcę utworzyć w $VMs. Może to być import CSV, a może poprosiłem użytkownika o szczegóły za pomocą „Read-Host” lub Out-GridView. Kiedy importujesz CSV, zawartość będzie już zorganizowana w tablicę. Ale dzięki temu kodowi możesz łatwo dodać do niego więcej treści i połączyć zarówno dane z CSV, jak i ze skryptu. Na przykład, randomizowane hasło lub pierwszy dostępny adres IP w podsieci w Azure. Moim końcowym celem jest posiadanie w $Report ładnego przeglądu wszystkich potrzebnych maszyn wirtualnych, które mogę później wykorzystać do stworzenia tych maszyn. Za pomocą poniższego kodu utworzysz obiekt PSObject dla każdej maszyny wirtualnej w zmiennej $VMs. Po utworzeniu PSObject, zostanie on dołączony do zmiennej $Report. Poprzez „$Report = @()” prosisz PowerShell o utworzenie pustej tablicy. Zobacz to jako pustą tablicę, którą możesz później wykorzystać do dodania do niej zawartości. Po udanym lub nieudanym wdrożeniu, możesz dodać status do $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

Powyższy przykład jest dla mnie zdecydowanie najłatwiejszym sposobem na stworzenie ładnej tablicy. Dzięki za przeczytanie. Mam nadzieję, że również uznasz to za przydatne.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.