-
Notifications
You must be signed in to change notification settings - Fork 0
/
Get-AzVMImageData.ps1
56 lines (45 loc) · 1.34 KB
/
Get-AzVMImageData.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
function Get-AzVMImageData {
[CmdletBinding()]
param (
[Parameter(mandatory = $true, position = 0)]
$location,
[Parameter(mandatory = $true, position = 1)]
$publisherName,
[Parameter(mandatory = $false, position = 2)]
$offerName
)
if (!$(Get-AzContext))
{
Add-AzAccount;
}
# location check
$locations = $(Get-AzLocation).Location;
if ($location -notin $locations)
{
throw "$location is not a valid Azure region. Valid regions: `r`n$($locations)";
}
# publisher check
$pub = Get-AzVMImagePublisher -Location $location | ? { $_.PublisherName -eq $publisherName };
if (!$pub)
{
throw "$publisherName is not a valid virtual machine image publisher in $location.";
}
# return offers
if (!$offerName)
{
$offers = $pub | Get-AzVMImageOffer;
return $offers;
}
# return skus
else
{
$off = Get-AzVMImageOffer -Location $location -PublisherName $publisherName | ? { $_.Offer -eq $offerName };
if (!$off)
{
throw "$offerName is not a valid offering for the image publisher $publisherName.";
}
$skus = $off | Get-AzVMImageSku;
return $skus;
}
}
Get-AzVMImageData -location $location -publisher $publisherName -offer $offerName;