@@ -25,13 +25,16 @@ namespace Microsoft.Azure.Commands.Compute
25
25
[ Cmdlet (
26
26
VerbsCommon . Set ,
27
27
ProfileNouns . OSDisk ,
28
- DefaultParameterSetName = WindowsParamSet ) ,
28
+ DefaultParameterSetName = DefaultParamSet ) ,
29
29
OutputType (
30
30
typeof ( PSVirtualMachine ) ) ]
31
31
public class SetAzureVMOSDiskCommand : Microsoft . Azure . Commands . ResourceManager . Common . AzureRMCmdlet
32
32
{
33
+ protected const string DefaultParamSet = "DefaultParamSet" ;
33
34
protected const string WindowsParamSet = "WindowsParamSet" ;
34
35
protected const string LinuxParamSet = "LinuxParamSet" ;
36
+ protected const string WindowsDiskEncryptionParameterSet = "WindowsDiskEncryptionParameterSet" ;
37
+ protected const string LinuxDiskEncryptionParameterSet = "LinuxDiskEncryptionParameterSet" ;
35
38
36
39
[ Alias ( "VMProfile" ) ]
37
40
[ Parameter (
@@ -90,15 +93,81 @@ public class SetAzureVMOSDiskCommand : Microsoft.Azure.Commands.ResourceManager.
90
93
Position = 6 ,
91
94
ValueFromPipelineByPropertyName = true ,
92
95
HelpMessage = HelpMessages . VMOSDiskWindowsOSType ) ]
96
+ [ Parameter (
97
+ ParameterSetName = WindowsDiskEncryptionParameterSet ,
98
+ Position = 6 ,
99
+ ValueFromPipelineByPropertyName = true ,
100
+ HelpMessage = HelpMessages . VMOSDiskWindowsOSType ) ]
93
101
public SwitchParameter Windows { get ; set ; }
94
102
95
103
[ Parameter (
96
104
ParameterSetName = LinuxParamSet ,
97
105
Position = 6 ,
98
106
ValueFromPipelineByPropertyName = true ,
99
107
HelpMessage = HelpMessages . VMOSDiskLinuxOSType ) ]
108
+ [ Parameter (
109
+ ParameterSetName = LinuxDiskEncryptionParameterSet ,
110
+ Position = 6 ,
111
+ ValueFromPipelineByPropertyName = true ,
112
+ HelpMessage = HelpMessages . VMOSDiskLinuxOSType ) ]
100
113
public SwitchParameter Linux { get ; set ; }
101
114
115
+ [ Parameter (
116
+ ParameterSetName = WindowsDiskEncryptionParameterSet ,
117
+ Mandatory = true ,
118
+ Position = 7 ,
119
+ ValueFromPipelineByPropertyName = true ,
120
+ HelpMessage = HelpMessages . VMOSDiskLinuxOSType ) ]
121
+ [ Parameter (
122
+ ParameterSetName = LinuxDiskEncryptionParameterSet ,
123
+ Mandatory = true ,
124
+ Position = 7 ,
125
+ ValueFromPipelineByPropertyName = true ,
126
+ HelpMessage = HelpMessages . VMOSDiskLinuxOSType ) ]
127
+ public Uri DiskEncryptionKeyUrl { get ; set ; }
128
+
129
+ [ Parameter (
130
+ ParameterSetName = WindowsDiskEncryptionParameterSet ,
131
+ Mandatory = true ,
132
+ Position = 8 ,
133
+ ValueFromPipelineByPropertyName = true ,
134
+ HelpMessage = HelpMessages . VMOSDiskLinuxOSType ) ]
135
+ [ Parameter (
136
+ ParameterSetName = LinuxDiskEncryptionParameterSet ,
137
+ Mandatory = true ,
138
+ Position = 8 ,
139
+ ValueFromPipelineByPropertyName = true ,
140
+ HelpMessage = HelpMessages . VMOSDiskLinuxOSType ) ]
141
+ public string DiskEncryptionKeyVaultId { get ; set ; }
142
+
143
+ [ Parameter (
144
+ ParameterSetName = WindowsDiskEncryptionParameterSet ,
145
+ Mandatory = false ,
146
+ Position = 9 ,
147
+ ValueFromPipelineByPropertyName = true ,
148
+ HelpMessage = HelpMessages . VMOSDiskLinuxOSType ) ]
149
+ [ Parameter (
150
+ ParameterSetName = LinuxDiskEncryptionParameterSet ,
151
+ Mandatory = false ,
152
+ Position = 9 ,
153
+ ValueFromPipelineByPropertyName = true ,
154
+ HelpMessage = HelpMessages . VMOSDiskLinuxOSType ) ]
155
+ public Uri KeyEncryptionKeyUrl { get ; set ; }
156
+
157
+ [ Parameter (
158
+ ParameterSetName = WindowsDiskEncryptionParameterSet ,
159
+ Mandatory = false ,
160
+ Position = 10 ,
161
+ ValueFromPipelineByPropertyName = true ,
162
+ HelpMessage = HelpMessages . VMOSDiskLinuxOSType ) ]
163
+ [ Parameter (
164
+ ParameterSetName = LinuxDiskEncryptionParameterSet ,
165
+ Mandatory = false ,
166
+ Position = 10 ,
167
+ ValueFromPipelineByPropertyName = true ,
168
+ HelpMessage = HelpMessages . VMOSDiskLinuxOSType ) ]
169
+ public string KeyEncryptionKeyVaultId { get ; set ; }
170
+
102
171
protected override void ProcessRecord ( )
103
172
{
104
173
if ( this . VM . StorageProfile == null )
@@ -119,7 +188,31 @@ protected override void ProcessRecord()
119
188
{
120
189
Uri = this . SourceImageUri
121
190
} ,
122
- CreateOption = this . CreateOption
191
+ CreateOption = this . CreateOption ,
192
+ EncryptionSettings =
193
+ ( this . ParameterSetName . Equals ( WindowsDiskEncryptionParameterSet ) || this . ParameterSetName . Equals ( WindowsDiskEncryptionParameterSet ) )
194
+ ? new DiskEncryptionSettings
195
+ {
196
+ DiskEncryptionKey = new KeyVaultSecretReference
197
+ {
198
+ SourceVault = new SourceVaultReference
199
+ {
200
+ ReferenceUri = this . DiskEncryptionKeyVaultId
201
+ } ,
202
+ SecretUrl = this . DiskEncryptionKeyUrl
203
+ } ,
204
+ KeyEncryptionKey = ( this . KeyEncryptionKeyVaultId == null || this . KeyEncryptionKeyUrl == null )
205
+ ? null
206
+ : new KeyVaultKeyReference
207
+ {
208
+ KeyUrl = this . KeyEncryptionKeyUrl ,
209
+ SourceVault = new SourceVaultReference
210
+ {
211
+ ReferenceUri = this . KeyEncryptionKeyVaultId
212
+ } ,
213
+ }
214
+ }
215
+ : null
123
216
} ;
124
217
125
218
WriteObject ( this . VM ) ;
0 commit comments