@@ -39,7 +39,6 @@ public class SetAzureVMOSDiskCommand : Microsoft.Azure.Commands.ResourceManager.
39
39
Mandatory = true ,
40
40
Position = 0 ,
41
41
ValueFromPipeline = true ,
42
- ValueFromPipelineByPropertyName = true ,
43
42
HelpMessage = HelpMessages . VMProfile ) ]
44
43
[ ValidateNotNullOrEmpty ]
45
44
public PSVirtualMachine VM { get ; set ; }
@@ -48,7 +47,6 @@ public class SetAzureVMOSDiskCommand : Microsoft.Azure.Commands.ResourceManager.
48
47
[ Parameter (
49
48
Mandatory = false ,
50
49
Position = 1 ,
51
- ValueFromPipelineByPropertyName = true ,
52
50
HelpMessage = HelpMessages . VMOSDiskName ) ]
53
51
[ ValidateNotNullOrEmpty ]
54
52
public string Name { get ; set ; }
@@ -57,129 +55,110 @@ public class SetAzureVMOSDiskCommand : Microsoft.Azure.Commands.ResourceManager.
57
55
[ Parameter (
58
56
Mandatory = false ,
59
57
Position = 2 ,
60
- ValueFromPipelineByPropertyName = true ,
61
58
HelpMessage = HelpMessages . VMOSDiskVhdUri ) ]
62
59
[ ValidateNotNullOrEmpty ]
63
60
public string VhdUri { get ; set ; }
64
61
65
62
[ Parameter (
66
63
Position = 3 ,
67
- ValueFromPipelineByPropertyName = true ,
68
64
HelpMessage = HelpMessages . VMOSDiskCaching ) ]
69
65
public CachingTypes ? Caching { get ; set ; }
70
66
71
67
[ Alias ( "SourceImage" ) ]
72
68
[ Parameter (
73
69
Position = 4 ,
74
- ValueFromPipelineByPropertyName = true ,
75
70
HelpMessage = HelpMessages . VMSourceImageUri ) ]
76
71
[ ValidateNotNullOrEmpty ]
77
72
public string SourceImageUri { get ; set ; }
78
73
79
74
[ Parameter (
80
- Mandatory = true ,
75
+ Mandatory = false ,
81
76
Position = 5 ,
82
- ValueFromPipelineByPropertyName = true ,
83
77
HelpMessage = HelpMessages . VMDataDiskCreateOption ) ]
84
78
public DiskCreateOptionTypes CreateOption { get ; set ; }
85
79
86
80
[ Parameter (
87
81
ParameterSetName = WindowsParamSet ,
88
82
Position = 6 ,
89
- ValueFromPipelineByPropertyName = true ,
90
83
HelpMessage = HelpMessages . VMOSDiskWindowsOSType ) ]
91
84
[ Parameter (
92
85
ParameterSetName = WindowsAndDiskEncryptionParameterSet ,
93
86
Position = 6 ,
94
- ValueFromPipelineByPropertyName = true ,
95
87
HelpMessage = HelpMessages . VMOSDiskWindowsOSType ) ]
96
88
public SwitchParameter Windows { get ; set ; }
97
89
98
90
[ Parameter (
99
91
ParameterSetName = LinuxParamSet ,
100
92
Position = 6 ,
101
- ValueFromPipelineByPropertyName = true ,
102
93
HelpMessage = HelpMessages . VMOSDiskLinuxOSType ) ]
103
94
[ Parameter (
104
95
ParameterSetName = LinuxAndDiskEncryptionParameterSet ,
105
96
Position = 6 ,
106
- ValueFromPipelineByPropertyName = true ,
107
97
HelpMessage = HelpMessages . VMOSDiskLinuxOSType ) ]
108
98
public SwitchParameter Linux { get ; set ; }
109
99
110
100
[ Parameter (
111
101
ParameterSetName = WindowsAndDiskEncryptionParameterSet ,
112
102
Mandatory = true ,
113
103
Position = 7 ,
114
- ValueFromPipelineByPropertyName = true ,
115
104
HelpMessage = HelpMessages . VMOSDiskDiskEncryptionKeyUrl ) ]
116
105
[ Parameter (
117
106
ParameterSetName = LinuxAndDiskEncryptionParameterSet ,
118
107
Mandatory = true ,
119
108
Position = 7 ,
120
- ValueFromPipelineByPropertyName = true ,
121
109
HelpMessage = HelpMessages . VMOSDiskDiskEncryptionKeyUrl ) ]
122
110
public string DiskEncryptionKeyUrl { get ; set ; }
123
111
124
112
[ Parameter (
125
113
ParameterSetName = WindowsAndDiskEncryptionParameterSet ,
126
114
Mandatory = true ,
127
115
Position = 8 ,
128
- ValueFromPipelineByPropertyName = true ,
129
116
HelpMessage = HelpMessages . VMOSDiskDiskEncryptionKeyVaultId ) ]
130
117
[ Parameter (
131
118
ParameterSetName = LinuxAndDiskEncryptionParameterSet ,
132
119
Mandatory = true ,
133
120
Position = 8 ,
134
- ValueFromPipelineByPropertyName = true ,
135
121
HelpMessage = HelpMessages . VMOSDiskDiskEncryptionKeyVaultId ) ]
136
122
public string DiskEncryptionKeyVaultId { get ; set ; }
137
123
138
124
[ Parameter (
139
125
ParameterSetName = WindowsAndDiskEncryptionParameterSet ,
140
126
Mandatory = false ,
141
127
Position = 9 ,
142
- ValueFromPipelineByPropertyName = true ,
143
128
HelpMessage = HelpMessages . VMOSDiskKeyEncryptionKeyUrl ) ]
144
129
[ Parameter (
145
130
ParameterSetName = LinuxAndDiskEncryptionParameterSet ,
146
131
Mandatory = false ,
147
132
Position = 9 ,
148
- ValueFromPipelineByPropertyName = true ,
149
133
HelpMessage = HelpMessages . VMOSDiskKeyEncryptionKeyUrl ) ]
150
134
public string KeyEncryptionKeyUrl { get ; set ; }
151
135
152
136
[ Parameter (
153
137
ParameterSetName = WindowsAndDiskEncryptionParameterSet ,
154
138
Mandatory = false ,
155
139
Position = 10 ,
156
- ValueFromPipelineByPropertyName = true ,
157
140
HelpMessage = HelpMessages . VMOSDiskKeyEncryptionKeyVaultId ) ]
158
141
[ Parameter (
159
142
ParameterSetName = LinuxAndDiskEncryptionParameterSet ,
160
143
Mandatory = false ,
161
144
Position = 10 ,
162
- ValueFromPipelineByPropertyName = true ,
163
145
HelpMessage = HelpMessages . VMOSDiskKeyEncryptionKeyVaultId ) ]
164
146
public string KeyEncryptionKeyVaultId { get ; set ; }
165
147
166
148
[ Parameter (
167
149
Mandatory = false ,
168
- ValueFromPipelineByPropertyName = true ,
169
150
HelpMessage = HelpMessages . VMOSDiskSizeInGB ) ]
170
151
[ AllowNull ]
171
152
public int ? DiskSizeInGB { get ; set ; }
172
153
173
154
[ Parameter (
174
155
Mandatory = false ,
175
- ValueFromPipelineByPropertyName = true ,
176
156
HelpMessage = HelpMessages . VMManagedDiskId ) ]
177
157
[ ValidateNotNullOrEmpty ]
178
158
public string ManagedDiskId { get ; set ; }
179
159
180
160
[ Parameter (
181
161
Mandatory = false ,
182
- ValueFromPipelineByPropertyName = true ,
183
162
HelpMessage = HelpMessages . VMManagedDiskAccountType ) ]
184
163
[ ValidateNotNullOrEmpty ]
185
164
public StorageAccountTypes ? StorageAccountType { get ; set ; }
@@ -199,24 +178,48 @@ public override void ExecuteCmdlet()
199
178
string . Empty , ErrorCategory . InvalidArgument , null ) ) ;
200
179
}
201
180
202
- this . VM . StorageProfile . OsDisk = new OSDisk
181
+ if ( this . VM . StorageProfile . OsDisk == null )
203
182
{
204
- Caching = this . Caching ,
205
- Name = this . Name ,
206
- OsType = this . Windows . IsPresent ? OperatingSystemTypes . Windows : this . Linux . IsPresent ? OperatingSystemTypes . Linux : ( OperatingSystemTypes ? ) null ,
207
- Vhd = string . IsNullOrEmpty ( this . VhdUri ) ? null : new VirtualHardDisk
183
+ this . VM . StorageProfile . OsDisk = new OSDisk ( ) ;
184
+ }
185
+
186
+ this . VM . StorageProfile . OsDisk . Name = this . Name ?? this . VM . StorageProfile . OsDisk . Name ;
187
+ this . VM . StorageProfile . OsDisk . Caching = this . Caching ?? this . VM . StorageProfile . OsDisk . Caching ;
188
+ this . VM . StorageProfile . OsDisk . DiskSizeGB = this . DiskSizeInGB ?? this . VM . StorageProfile . OsDisk . DiskSizeGB ;
189
+
190
+ if ( this . Windows . IsPresent )
191
+ {
192
+ this . VM . StorageProfile . OsDisk . OsType = OperatingSystemTypes . Windows ;
193
+ }
194
+ else if ( this . Linux . IsPresent )
195
+ {
196
+ this . VM . StorageProfile . OsDisk . OsType = OperatingSystemTypes . Linux ;
197
+ }
198
+
199
+ if ( ! string . IsNullOrEmpty ( this . VhdUri ) )
200
+ {
201
+ this . VM . StorageProfile . OsDisk . Vhd = new VirtualHardDisk
208
202
{
209
203
Uri = this . VhdUri
210
- } ,
211
- DiskSizeGB = this . DiskSizeInGB ,
212
- Image = string . IsNullOrEmpty ( this . SourceImageUri ) ? null : new VirtualHardDisk
204
+ } ;
205
+ }
206
+
207
+ if ( ! string . IsNullOrEmpty ( this . SourceImageUri ) )
208
+ {
209
+ this . VM . StorageProfile . OsDisk . Image = new VirtualHardDisk
213
210
{
214
211
Uri = this . SourceImageUri
215
- } ,
216
- CreateOption = this . CreateOption ,
217
- EncryptionSettings =
218
- ( this . ParameterSetName . Equals ( WindowsAndDiskEncryptionParameterSet ) || this . ParameterSetName . Equals ( LinuxAndDiskEncryptionParameterSet ) )
219
- ? new DiskEncryptionSettings
212
+ } ;
213
+ }
214
+
215
+ if ( this . MyInvocation . BoundParameters . ContainsKey ( "CreateOption" ) )
216
+ {
217
+ this . VM . StorageProfile . OsDisk . CreateOption = this . CreateOption ;
218
+ }
219
+
220
+ if ( this . ParameterSetName . Equals ( WindowsAndDiskEncryptionParameterSet ) || this . ParameterSetName . Equals ( LinuxAndDiskEncryptionParameterSet ) )
221
+ {
222
+ this . VM . StorageProfile . OsDisk . EncryptionSettings = new DiskEncryptionSettings
220
223
{
221
224
DiskEncryptionKey = new KeyVaultSecretReference
222
225
{
@@ -236,16 +239,19 @@ public override void ExecuteCmdlet()
236
239
Id = this . KeyEncryptionKeyVaultId
237
240
} ,
238
241
}
242
+ } ;
243
+ }
244
+
245
+ if ( ! string . IsNullOrEmpty ( this . ManagedDiskId ) || this . StorageAccountType != null )
246
+ {
247
+ if ( this . VM . StorageProfile . OsDisk . ManagedDisk == null )
248
+ {
249
+ this . VM . StorageProfile . OsDisk . ManagedDisk = new ManagedDiskParameters ( ) ;
239
250
}
240
- : null ,
241
- ManagedDisk = ( this . ManagedDiskId == null && this . StorageAccountType == null )
242
- ? null
243
- : new ManagedDiskParameters
244
- {
245
- Id = this . ManagedDiskId ,
246
- StorageAccountType = this . StorageAccountType
247
- }
248
- } ;
251
+
252
+ this . VM . StorageProfile . OsDisk . ManagedDisk . Id = this . ManagedDiskId ?? this . VM . StorageProfile . OsDisk . ManagedDisk . Id ;
253
+ this . VM . StorageProfile . OsDisk . ManagedDisk . StorageAccountType = this . StorageAccountType ?? this . VM . StorageProfile . OsDisk . ManagedDisk . StorageAccountType ;
254
+ }
249
255
250
256
WriteObject ( this . VM ) ;
251
257
}
0 commit comments