@@ -107,7 +107,7 @@ function Test-VirtualMachineExtension
107
107
Assert-AreEqual $p.StorageProfile.ImageReference.Version $imgRef.Version ;
108
108
109
109
# Virtual Machine
110
- New-AzureVM - ResourceGroupName $rgname - Location $loc - Name $vmname - VM $p ;
110
+ New-AzureVM - ResourceGroupName $rgname - Location $loc - VM $p ;
111
111
112
112
# Virtual Machine Extension
113
113
$extname = ' csetest' ;
@@ -246,7 +246,7 @@ function Test-VirtualMachineExtensionUsingHashTable
246
246
Assert-AreEqual $p.StorageProfile.ImageReference.Version $imgRef.Version ;
247
247
248
248
# Virtual Machine Create
249
- New-AzureVM - ResourceGroupName $rgname - Location $loc - Name $vmname - VM $p ;
249
+ New-AzureVM - ResourceGroupName $rgname - Location $loc - VM $p ;
250
250
251
251
# Virtual Machine Extension
252
252
$extname = $rgname + ' ext' ;
@@ -255,7 +255,7 @@ function Test-VirtualMachineExtensionUsingHashTable
255
255
$extver = ' 1.1' ;
256
256
257
257
# Set extension settings by hash table
258
- $settings = @ {" fileUris" = " " ; " commandToExecute" = " " };
258
+ $settings = @ {" fileUris" = @ () ; " commandToExecute" = " " };
259
259
$protectedsettings = @ {" storageAccountName" = $stoname ; " storageAccountKey" = $stokey };
260
260
Set-AzureVMExtension - ResourceGroupName $rgname - Location $loc - VMName $vmname - Name $extname - Publisher $publisher - ExtensionType $exttype - TypeHandlerVersion $extver - Settings $settings - ProtectedSettings $protectedsettings ;
261
261
@@ -408,24 +408,24 @@ function Test-VirtualMachineCustomScriptExtension
408
408
409
409
# Virtual Machine
410
410
# TODO: Still need to do retry for New-AzureVM for SA, even it's returned in Get-.
411
- New-AzureVM - ResourceGroupName $rgname - Location $loc - Name $vmname - VM $p ;
411
+ New-AzureVM - ResourceGroupName $rgname - Location $loc - VM $p ;
412
412
413
413
# Virtual Machine Extension
414
414
$extname = $rgname + ' ext' ;
415
415
$extver = ' 1.1' ;
416
416
$publisher = ' Microsoft.Compute' ;
417
417
$exttype = ' CustomScriptExtension' ;
418
418
$fileToExecute = ' a.exe' ;
419
- $containderName = ' script' ;
419
+ $containerName = ' script' ;
420
420
421
421
# Set custom script extension
422
- Set-AzureVMCustomScriptExtension - ResourceGroupName $rgname - Location $loc - VMName $vmname - Name $extname - TypeHandlerVersion $extver - StorageAccountName $stoname - StorageAccountKey $stokey - FileName $fileToExecute - ContainerName $containderName ;
422
+ Set-AzureVMCustomScriptExtension - ResourceGroupName $rgname - Location $loc - VMName $vmname - Name $extname - TypeHandlerVersion $extver - StorageAccountName $stoname - StorageAccountKey $stokey - FileName $fileToExecute - ContainerName $containerName ;
423
423
424
424
# Get VM Extension
425
425
$ext = Get-AzureVMCustomScriptExtension - ResourceGroupName $rgname - VMName $vmname - Name $extname ;
426
426
427
427
$expCommand = ' powershell -ExecutionPolicy Unrestricted -file ' + $fileToExecute + ' ' ;
428
- $expUri = $stoname + ' .blob.core.windows.net/' + $containderName + ' /' + $fileToExecute ;
428
+ $expUri = $stoname + ' .blob.core.windows.net/' + $containerName + ' /' + $fileToExecute ;
429
429
Assert-AreEqual $ext.ResourceGroupName $rgname ;
430
430
Assert-AreEqual $ext.Name $extname ;
431
431
Assert-AreEqual $ext.Publisher $publisher ;
@@ -482,6 +482,163 @@ function Test-VirtualMachineCustomScriptExtension
482
482
}
483
483
484
484
485
+ <#
486
+ . SYNOPSIS
487
+ Test Virtual Machine Custom Script Extensions using FileUri
488
+ #>
489
+ function Test-VirtualMachineCustomScriptExtensionFileUri
490
+ {
491
+ # Setup
492
+ $rgname = Get-ComputeTestResourceName
493
+
494
+ try
495
+ {
496
+ # Common
497
+ $loc = ' westus' ;
498
+ New-AzureResourceGroup - Name $rgname - Location $loc - Force;
499
+
500
+ # VM Profile & Hardware
501
+ $vmsize = ' Standard_A4' ;
502
+ $vmname = ' vm' + $rgname ;
503
+ $p = New-AzureVMConfig - VMName $vmname - VMSize $vmsize ;
504
+ Assert-AreEqual $p.HardwareProfile.VirtualMachineSize $vmsize ;
505
+
506
+ # NRP
507
+ $subnet = New-AzureVirtualNetworkSubnetConfig - Name (' subnet' + $rgname ) - AddressPrefix " 10.0.0.0/24" ;
508
+ $vnet = New-AzureVirtualNetwork - Force - Name (' vnet' + $rgname ) - ResourceGroupName $rgname - Location $loc - AddressPrefix " 10.0.0.0/16" - DnsServer " 10.1.1.1" - Subnet $subnet ;
509
+ $vnet = Get-AzureVirtualNetwork - Name (' vnet' + $rgname ) - ResourceGroupName $rgname ;
510
+ $subnetId = $vnet.Subnets [0 ].Id;
511
+ $pubip = New-AzurePublicIpAddress - Force - Name (' pubip' + $rgname ) - ResourceGroupName $rgname - Location $loc - AllocationMethod Dynamic - DomainNameLabel (' pubip' + $rgname );
512
+ $pubip = Get-AzurePublicIpAddress - Name (' pubip' + $rgname ) - ResourceGroupName $rgname ;
513
+ $pubipId = $pubip.Id ;
514
+ $nic = New-AzureNetworkInterface - Force - Name (' nic' + $rgname ) - ResourceGroupName $rgname - Location $loc - SubnetId $subnetId - PublicIpAddressId $pubip.Id ;
515
+ $nic = Get-AzureNetworkInterface - Name (' nic' + $rgname ) - ResourceGroupName $rgname ;
516
+ $nicId = $nic.Id ;
517
+
518
+ $p = Add-AzureVMNetworkInterface - VM $p - Id $nicId ;
519
+ Assert-AreEqual $p.NetworkProfile.NetworkInterfaces.Count 1 ;
520
+ Assert-AreEqual $p.NetworkProfile.NetworkInterfaces [0 ].ReferenceUri $nicId ;
521
+
522
+ # Storage Account (SA)
523
+ $stoname = ' sto' + $rgname ;
524
+ $stotype = ' Standard_GRS' ;
525
+ New-AzureStorageAccount - ResourceGroupName $rgname - Name $stoname - Location $loc - Type $stotype ;
526
+ Retry- IfException { $global :stoaccount = Get-AzureStorageAccount - ResourceGroupName $rgname - Name $stoname ; }
527
+ $stokey = (Get-AzureStorageAccountKey - ResourceGroupName $rgname - Name $stoname ).Key1;
528
+
529
+ $osDiskName = ' osDisk' ;
530
+ $osDiskCaching = ' ReadWrite' ;
531
+ $osDiskVhdUri = " https://$stoname .blob.core.windows.net/test/os.vhd" ;
532
+ $dataDiskVhdUri1 = " https://$stoname .blob.core.windows.net/test/data1.vhd" ;
533
+ $dataDiskVhdUri2 = " https://$stoname .blob.core.windows.net/test/data2.vhd" ;
534
+
535
+ $p = Set-AzureVMOSDisk - VM $p - Name $osDiskName - VhdUri $osDiskVhdUri - Caching $osDiskCaching - CreateOption FromImage;
536
+
537
+ $p = Add-AzureVMDataDisk - VM $p - Name ' testDataDisk1' - Caching ' ReadOnly' - DiskSizeInGB 10 - Lun 1 - VhdUri $dataDiskVhdUri1 - CreateOption Empty;
538
+ $p = Add-AzureVMDataDisk - VM $p - Name ' testDataDisk2' - Caching ' ReadOnly' - DiskSizeInGB 11 - Lun 2 - VhdUri $dataDiskVhdUri2 - CreateOption Empty;
539
+
540
+ Assert-AreEqual $p.StorageProfile.OSDisk.Caching $osDiskCaching ;
541
+ Assert-AreEqual $p.StorageProfile.OSDisk.Name $osDiskName ;
542
+ Assert-AreEqual $p.StorageProfile.OSDisk.VirtualHardDisk.Uri $osDiskVhdUri ;
543
+ Assert-AreEqual $p.StorageProfile.DataDisks.Count 2 ;
544
+ Assert-AreEqual $p.StorageProfile.DataDisks [0 ].Caching ' ReadOnly' ;
545
+ Assert-AreEqual $p.StorageProfile.DataDisks [0 ].DiskSizeGB 10 ;
546
+ Assert-AreEqual $p.StorageProfile.DataDisks [0 ].Lun 1 ;
547
+ Assert-AreEqual $p.StorageProfile.DataDisks [0 ].VirtualHardDisk.Uri $dataDiskVhdUri1 ;
548
+ Assert-AreEqual $p.StorageProfile.DataDisks [1 ].Caching ' ReadOnly' ;
549
+ Assert-AreEqual $p.StorageProfile.DataDisks [1 ].DiskSizeGB 11 ;
550
+ Assert-AreEqual $p.StorageProfile.DataDisks [1 ].Lun 2 ;
551
+ Assert-AreEqual $p.StorageProfile.DataDisks [1 ].VirtualHardDisk.Uri $dataDiskVhdUri2 ;
552
+
553
+ # OS & Image
554
+ $user = " Foo12" ;
555
+ $password = ' BaR@123' + $rgname ;
556
+ $securePassword = ConvertTo-SecureString $password - AsPlainText - Force;
557
+ $cred = New-Object System.Management.Automation.PSCredential ($user , $securePassword );
558
+ $computerName = ' test' ;
559
+ $vhdContainer = " https://$stoname .blob.core.windows.net/test" ;
560
+
561
+ $p = Set-AzureVMOperatingSystem - VM $p - Windows - ComputerName $computerName - Credential $cred - ProvisionVMAgent;
562
+
563
+ $imgRef = Get-DefaultCRPWindowsImageOffline ;
564
+ $p = ($imgRef | Set-AzureVMSourceImage - VM $p );
565
+
566
+ Assert-AreEqual $p.OSProfile.AdminUsername $user ;
567
+ Assert-AreEqual $p.OSProfile.ComputerName $computerName ;
568
+ Assert-AreEqual $p.OSProfile.AdminPassword $password ;
569
+ Assert-AreEqual $p.OSProfile.WindowsConfiguration.ProvisionVMAgent $true ;
570
+
571
+ # Virtual Machine
572
+ New-AzureVM - ResourceGroupName $rgname - Location $loc - VM $p ;
573
+
574
+ # Virtual Machine Extension
575
+ $extname = $rgname + ' ext' ;
576
+ $extver = ' 1.1' ;
577
+ $publisher = ' Microsoft.Compute' ;
578
+ $exttype = ' CustomScriptExtension' ;
579
+ $containerName = ' scripts' ;
580
+ $fileToExecute = ' test1.ps1' ;
581
+ $duration = New-Object - TypeName TimeSpan(2 , 0 , 0 );
582
+ $type = [Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions ]::Read;
583
+
584
+ $sasFile1 = Get-SasUri $stoname $stokey $containerName $fileToExecute $duration $type ;
585
+ $sasFile2 = Get-SasUri $stoname $stokey $containerName $fileToExecute $duration $type ;
586
+
587
+ # Set custom script extension
588
+ Set-AzureVMCustomScriptExtension - ResourceGroupName $rgname - Location $loc - VMName $vmname - Name $extname - TypeHandlerVersion $extver - Run $fileToExecute - FileUri $sasFile1 , $sasFile2 ;
589
+
590
+ # Get VM Extension
591
+ $ext = Get-AzureVMCustomScriptExtension - ResourceGroupName $rgname - VMName $vmname - Name $extname ;
592
+
593
+ $expCommand = ' powershell -ExecutionPolicy Unrestricted -file ' + $fileToExecute + ' ' ;
594
+ $expUri = $stoname + ' .blob.core.windows.net/' + $containerName + ' /' + $fileToExecute ;
595
+ Assert-AreEqual $ext.ResourceGroupName $rgname ;
596
+ Assert-AreEqual $ext.Name $extname ;
597
+ Assert-AreEqual $ext.Publisher $publisher ;
598
+ Assert-AreEqual $ext.ExtensionType $exttype ;
599
+ Assert-AreEqual $ext.TypeHandlerVersion $extver ;
600
+ Assert-AreEqual $ext.CommandToExecute $expCommand ;
601
+ Assert-True {$ext.Uri [0 ].Contains($expUri )};
602
+ Assert-True {$ext.Uri [1 ].Contains($expUri )};
603
+ Assert-NotNull $ext.ProvisioningState ;
604
+
605
+ $ext = Get-AzureVMCustomScriptExtension - ResourceGroupName $rgname - VMName $vmname - Name $extname - Status;
606
+ Assert-AreEqual $ext.ResourceGroupName $rgname ;
607
+ Assert-AreEqual $ext.Name $extname ;
608
+ Assert-AreEqual $ext.Publisher $publisher ;
609
+ Assert-AreEqual $ext.ExtensionType $exttype ;
610
+ Assert-AreEqual $ext.TypeHandlerVersion $extver ;
611
+ Assert-AreEqual $ext.CommandToExecute $expCommand ;
612
+ Assert-True {$ext.Uri [0 ].Contains($expUri )};
613
+ Assert-True {$ext.Uri [1 ].Contains($expUri )};
614
+ Assert-NotNull $ext.ProvisioningState ;
615
+ Assert-NotNull $ext.Statuses ;
616
+
617
+ # Get VM
618
+ $vm1 = Get-AzureVM - Name $vmname - ResourceGroupName $rgname ;
619
+ Assert-AreEqual $vm1.Name $vmname ;
620
+ Assert-AreEqual $vm1.NetworkProfile.NetworkInterfaces.Count 1 ;
621
+ Assert-AreEqual $vm1.NetworkProfile.NetworkInterfaces [0 ].ReferenceUri $nicId ;
622
+
623
+ Assert-AreEqual $vm1.OSProfile.AdminUsername $user ;
624
+ Assert-AreEqual $vm1.OSProfile.ComputerName $computerName ;
625
+ Assert-AreEqual $vm1.HardwareProfile.VirtualMachineSize $vmsize ;
626
+
627
+ # Check Extensions in VM
628
+ Assert-AreEqual $vm1.Extensions.Count 1 ;
629
+ Assert-AreEqual $vm1.Extensions [0 ].Name $extname ;
630
+ Assert-AreEqual $vm1.Extensions [0 ].Type ' Microsoft.Compute/virtualMachines/extensions' ;
631
+ Assert-AreEqual $vm1.Extensions [0 ].Publisher $publisher ;
632
+ Assert-AreEqual $vm1.Extensions [0 ].ExtensionType $exttype ;
633
+ Assert-AreEqual $vm1.Extensions [0 ].TypeHandlerVersion $extver ;
634
+ Assert-NotNull $vm1.Extensions [0 ].Settings;
635
+ }
636
+ finally
637
+ {
638
+ # Cleanup
639
+ Clean - ResourceGroup $rgname
640
+ }
641
+ }
485
642
486
643
<#
487
644
. SYNOPSIS
@@ -578,7 +735,7 @@ function Test-VirtualMachineAccessExtension
578
735
579
736
# Virtual Machine
580
737
# TODO: Still need to do retry for New-AzureVM for SA, even it's returned in Get-.
581
- New-AzureVM - ResourceGroupName $rgname - Location $loc - Name $vmname - VM $p ;
738
+ New-AzureVM - ResourceGroupName $rgname - Location $loc - VM $p ;
582
739
583
740
# Virtual Machine Extension
584
741
$extname = ' csetest' ;
0 commit comments