@@ -66,21 +66,87 @@ function Test-VirtualMachineProfile
66
66
Assert-AreEqual $p.StorageProfile.DataDisks [1 ].Lun 1 ;
67
67
Assert-AreEqual $p.StorageProfile.DataDisks [1 ].VirtualHardDisk.Uri $dataDiskVhdUri2 ;
68
68
69
- # OS
69
+ # Windows OS
70
70
$user = " Foo12" ;
71
71
$password = ' BaR@000' + ((Get-Random ) % 10000 );
72
72
$securePassword = ConvertTo-SecureString $password - AsPlainText - Force;
73
73
$cred = New-Object System.Management.Automation.PSCredential ($user , $securePassword );
74
74
$computerName = ' test' ;
75
75
$vhdContainer = " https://$stoname .blob.core.windows.net/test" ;
76
76
$img = ' a699494373c04fc0bc8f2bb1389d6106__Windows-Server-2012-Datacenter-201503.01-en.us-127GB.vhd' ;
77
-
78
- $p = Set-AzureVMOperatingSystem - VM $p - Windows - ComputerName $computerName - Credential $cred ;
77
+
78
+ $referenceUri = " /subscriptions/05cacd0c-6f9b-492e-b673-d8be41a7644f/resourceGroups/RgTest1/providers/Microsoft.KeyVault/vaults/TestVault123" ;
79
+ $certStore = " My" ;
80
+ $certUrl = " https://testvault123.vault.azure.net/secrets/Test1/514ceb769c984379a7e0230bdd703272" ;
81
+ $vaultCert = New-AzureVaultCertificate - CertificateStore $certStore - CertificateUrl $certUrl ;
82
+ $vaultSG = New-AzureVaultSecretGroup - ReferenceUri $referenceUri - VaultCertificates $vaultCert ;
83
+
84
+ $aucSetting = " AutoLogon" ;
85
+ $aucContent = " <UserAccounts><AdministratorPassword><Value>p@ssw0rd</Value><PlainText>true</PlainText></AdministratorPassword></UserAccounts>" ;
86
+ $auc1 = New-AzureAdditionalUnattendContent - Content $aucContent - SettingName $aucSetting ;
87
+ $auc2 = New-AzureAdditionalUnattendContent - Content $aucContent - SettingName $aucSetting ;
88
+
89
+ $winRMCertUrl = " http://keyVaultName.vault.azure.net/secrets/secretName/secretVersion" ;
90
+ $timeZone = " Pacific Standard Time" ;
91
+ $custom = " echo 'Hello World'" ;
92
+ $encodedCustom = " ZWNobyAnSGVsbG8gV29ybGQn" ;
93
+
94
+ $p = Set-AzureVMOperatingSystem - VM $p - Windows - ComputerName $computerName - Credential $cred - CustomData $custom - Secrets $vaultSG - WinRMHttp - WinRMHttps - WinRMCertUrl $winRMCertUrl - ProvisionVMAgent - EnableAutoUpdate - TimeZone $timeZone - AdditionalUnattendContents $auc1 , $auc2 ;
79
95
$p = Set-AzureVMSourceImage - VM $p - Name $img - DestinationVhdsContainer $vhdContainer ;
80
96
81
97
Assert-AreEqual $p.OSProfile.AdminUsername $user ;
82
98
Assert-AreEqual $p.OSProfile.ComputerName $computerName ;
83
99
Assert-AreEqual $p.OSProfile.AdminPassword $password ;
84
100
Assert-AreEqual $p.StorageProfile.DestinationVhdsContainer.ToString () $vhdContainer ;
85
101
Assert-AreEqual $p.StorageProfile.SourceImage.ReferenceUri (' /' + (Get-AzureSubscription - Current).SubscriptionId + ' /services/images/' + $img );
102
+ Assert-AreEqual $p.OSProfile.Secrets [0 ].SourceVault.ReferenceUri $referenceUri ;
103
+ Assert-AreEqual $p.OSProfile.Secrets [0 ].VaultCertificates[0 ].CertificateStore $certStore ;
104
+ Assert-AreEqual $p.OSProfile.Secrets [0 ].VaultCertificates[0 ].CertificateUrl $certUrl ;
105
+ Assert-AreEqual $encodedCustom $p.OSProfile.CustomData ;
106
+
107
+ # Verify WinRM
108
+ Assert-Null $p.OSProfile.WindowsConfiguration.WinRMConfiguration.Listeners [0 ].CertificateUrl;
109
+ Assert-AreEqual " http" $p.OSProfile.WindowsConfiguration.WinRMConfiguration.Listeners [0 ].Protocol ;
110
+ Assert-AreEqual $winRMCertUrl $p.OSProfile.WindowsConfiguration.WinRMConfiguration.Listeners [1 ].CertificateUrl ;
111
+ Assert-AreEqual " https" $p.OSProfile.WindowsConfiguration.WinRMConfiguration.Listeners [1 ].Protocol ;
112
+
113
+ # Verify Windows Provisioning Setup
114
+ Assert-AreEqual $true $p.OSProfile.WindowsConfiguration.ProvisionVMAgent ;
115
+ Assert-AreEqual $true $p.OSProfile.WindowsConfiguration.EnableAutomaticUpdates ;
116
+ Assert-AreEqual $timeZone $p.OSProfile.WindowsConfiguration.TimeZone ;
117
+
118
+ # Verify Additional Unattend Content
119
+ Assert-AreEqual " Microsoft-Windows-Shell-Setup" $p.OSProfile.WindowsConfiguration.AdditionalUnattendContents [0 ].ComponentName;
120
+ Assert-AreEqual $aucContent $p.OSProfile.WindowsConfiguration.AdditionalUnattendContents [0 ].Content;
121
+ Assert-AreEqual " oobeSystem" $p.OSProfile.WindowsConfiguration.AdditionalUnattendContents [0 ].PassName;
122
+ Assert-AreEqual $aucSetting $p.OSProfile.WindowsConfiguration.AdditionalUnattendContents [0 ].SettingName;
123
+ Assert-AreEqual " Microsoft-Windows-Shell-Setup" $p.OSProfile.WindowsConfiguration.AdditionalUnattendContents [1 ].ComponentName;
124
+ Assert-AreEqual $aucContent $p.OSProfile.WindowsConfiguration.AdditionalUnattendContents [1 ].Content;
125
+ Assert-AreEqual " oobeSystem" $p.OSProfile.WindowsConfiguration.AdditionalUnattendContents [1 ].PassName;
126
+ Assert-AreEqual $aucSetting $p.OSProfile.WindowsConfiguration.AdditionalUnattendContents [1 ].SettingName;
127
+
128
+ # Linux OS
129
+ $img = " b4590d9e3ed742e4a1d46e5424aa335e__SUSE-Linux-Enterprise-Server-11-SP3-v206" ;
130
+ $sshPath = " /home/pstestuser/.ssh/authorized_keys" ;
131
+ $sshPublicKey = " MIIDszCCApugAwIBAgIJALBV9YJCF/tAMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV" ;
132
+
133
+ $sshKey = New-AzureSshPublicKey - KeyData $sshPublicKey - Path $sshPath ;
134
+
135
+ $p = Set-AzureVMOperatingSystem - VM $p - Linux - ComputerName $computerName - Credential $cred - CustomData $custom - Secrets $vaultSG - SSHPublicKeys $sshKey - DisablePasswordAuthentication;
136
+ $p = Set-AzureVMSourceImage - VM $p - Name $img - DestinationVhdsContainer $vhdContainer ;
137
+
138
+ Assert-AreEqual $p.OSProfile.AdminUsername $user ;
139
+ Assert-AreEqual $p.OSProfile.ComputerName $computerName ;
140
+ Assert-AreEqual $p.OSProfile.AdminPassword $password ;
141
+ Assert-AreEqual $p.StorageProfile.DestinationVhdsContainer.ToString () $vhdContainer ;
142
+ Assert-AreEqual $p.StorageProfile.SourceImage.ReferenceUri (' /' + (Get-AzureSubscription - Current).SubscriptionId + ' /services/images/' + $img );
143
+ Assert-AreEqual $p.OSProfile.Secrets [0 ].SourceVault.ReferenceUri $referenceUri ;
144
+ Assert-AreEqual $p.OSProfile.Secrets [0 ].VaultCertificates[0 ].CertificateStore $certStore ;
145
+ Assert-AreEqual $p.OSProfile.Secrets [0 ].VaultCertificates[0 ].CertificateUrl $certUrl ;
146
+ Assert-AreEqual $encodedCustom $p.OSProfile.CustomData ;
147
+
148
+ # Verify SSH configuration
149
+ Assert-AreEqual $sshPublicKey $p.OSProfile.LinuxConfiguration.SshConfiguration.PublicKeys [0 ].KeyData;
150
+ Assert-AreEqual $sshPath $p.OSProfile.LinuxConfiguration.SshConfiguration.PublicKeys [0 ].Path;
151
+ Assert-AreEqual $true $p.OSProfile.LinuxConfiguration.DisablePasswordAuthentication
86
152
}
0 commit comments