/src/ServiceManagement/Compute/Commands.ServiceManagement/Extensions/RDP/NewAzureServiceRemoteDesktopExtensionConfig.cs
https://gitlab.com/jslee1/azure-powershell · C# · 128 lines · 100 code · 12 blank · 16 comment · 2 complexity · 03e279d9cf4149969a90b39cab792ade MD5 · raw file
- // ----------------------------------------------------------------------------------
- //
- // Copyright Microsoft Corporation
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- // http://www.apache.org/licenses/LICENSE-2.0
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- // ----------------------------------------------------------------------------------
-
- using System;
- using System.Linq;
- using System.Management.Automation;
- using System.Security.Cryptography.X509Certificates;
-
- namespace Microsoft.WindowsAzure.Commands.ServiceManagement.Extensions
- {
- /// <summary>
- /// New Microsoft Azure Service Remote Desktop Extension.
- /// </summary>
- [Cmdlet(VerbsCommon.New, "AzureServiceRemoteDesktopExtensionConfig", DefaultParameterSetName = NewExtensionParameterSetName), OutputType(typeof(ExtensionConfigurationInput))]
- public class NewAzureServiceRemoteDesktopExtensionConfigCommand : BaseAzureServiceRemoteDesktopExtensionCmdlet
- {
- [Parameter(Position = 0, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.RoleHelpMessage)]
- [Parameter(Position = 0, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionUsingThumbprintParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.RoleHelpMessage)]
- [ValidateNotNullOrEmpty]
- public override string[] Role
- {
- get;
- set;
- }
-
- [Parameter(Position = 1, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.X509CertificateHelpMessage)]
- [ValidateNotNullOrEmpty]
- public override X509Certificate2 X509Certificate
- {
- get;
- set;
- }
-
- [Parameter(Position = 1, ValueFromPipelineByPropertyName = true, Mandatory = true, ParameterSetName = NewExtensionUsingThumbprintParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.CertificateThumbprintHelpMessage)]
- [ValidateNotNullOrEmpty]
- public override string CertificateThumbprint
- {
- get;
- set;
- }
-
- [Parameter(Position = 2, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.ThumbprintAlgorithmHelpMessage)]
- [Parameter(Position = 2, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionUsingThumbprintParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.ThumbprintAlgorithmHelpMessage)]
- [ValidateNotNullOrEmpty]
- public override string ThumbprintAlgorithm
- {
- get;
- set;
- }
-
- [Parameter(Position = 3, ValueFromPipelineByPropertyName = true, Mandatory = true, ParameterSetName = NewExtensionParameterSetName, HelpMessage = "Remote Desktop Credential")]
- [Parameter(Position = 3, ValueFromPipelineByPropertyName = true, Mandatory = true, ParameterSetName = NewExtensionUsingThumbprintParameterSetName, HelpMessage = "Remote Desktop Credential")]
- public override PSCredential Credential
- {
- get;
- set;
- }
-
- [Parameter(Position = 4, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionParameterSetName, HelpMessage = "Remote Desktop User Expiration Date")]
- [Parameter(Position = 4, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionUsingThumbprintParameterSetName, HelpMessage = "Remote Desktop User Expiration Date")]
- [ValidateNotNullOrEmpty]
- public override DateTime Expiration
- {
- get;
- set;
- }
-
- [Parameter(Position = 5, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.VersionHelpMessage)]
- [Parameter(Position = 5, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionUsingThumbprintParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.VersionHelpMessage)]
- [ValidateNotNullOrEmpty]
- public override string Version
- {
- get;
- set;
- }
-
- [Parameter(Position = 6, Mandatory = false, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.ExtensionIdHelpMessage)]
- [Parameter(Position = 6, Mandatory = false, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionUsingThumbprintParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.ExtensionIdHelpMessage)]
- [ValidateNotNullOrEmpty]
- public override string ExtensionId
- {
- get;
- set;
- }
-
- protected override void ValidateParameters()
- {
- base.ValidateParameters();
- ValidateThumbprint(false);
- Expiration = Expiration.Equals(default(DateTime)) ? DateTime.Now.AddMonths(12) : Expiration;
- ValidateConfiguration();
- }
-
- public void ExecuteCommand()
- {
- ValidateParameters();
- WriteObject(new ExtensionConfigurationInput
- {
- Id = ExtensionId,
- CertificateThumbprint = CertificateThumbprint,
- ThumbprintAlgorithm = ThumbprintAlgorithm,
- ProviderNameSpace = ProviderNamespace,
- Type = ExtensionName,
- PublicConfiguration = PublicConfiguration,
- PrivateConfiguration = PrivateConfiguration,
- X509Certificate = X509Certificate,
- Version = Version,
- Roles = new ExtensionRoleList(Role != null && Role.Any() ? Role.Select(r => new ExtensionRole(r)) : Enumerable.Repeat(new ExtensionRole(), 1))
- });
- }
-
- protected override void OnProcessRecord()
- {
- ExecuteCommand();
- }
- }
- }