/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

  1. // ----------------------------------------------------------------------------------
  2. //
  3. // Copyright Microsoft Corporation
  4. // Licensed under the Apache License, Version 2.0 (the "License");
  5. // you may not use this file except in compliance with the License.
  6. // You may obtain a copy of the License at
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. // Unless required by applicable law or agreed to in writing, software
  9. // distributed under the License is distributed on an "AS IS" BASIS,
  10. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  11. // See the License for the specific language governing permissions and
  12. // limitations under the License.
  13. // ----------------------------------------------------------------------------------
  14. using System;
  15. using System.Linq;
  16. using System.Management.Automation;
  17. using System.Security.Cryptography.X509Certificates;
  18. namespace Microsoft.WindowsAzure.Commands.ServiceManagement.Extensions
  19. {
  20. /// <summary>
  21. /// New Microsoft Azure Service Remote Desktop Extension.
  22. /// </summary>
  23. [Cmdlet(VerbsCommon.New, "AzureServiceRemoteDesktopExtensionConfig", DefaultParameterSetName = NewExtensionParameterSetName), OutputType(typeof(ExtensionConfigurationInput))]
  24. public class NewAzureServiceRemoteDesktopExtensionConfigCommand : BaseAzureServiceRemoteDesktopExtensionCmdlet
  25. {
  26. [Parameter(Position = 0, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.RoleHelpMessage)]
  27. [Parameter(Position = 0, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionUsingThumbprintParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.RoleHelpMessage)]
  28. [ValidateNotNullOrEmpty]
  29. public override string[] Role
  30. {
  31. get;
  32. set;
  33. }
  34. [Parameter(Position = 1, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.X509CertificateHelpMessage)]
  35. [ValidateNotNullOrEmpty]
  36. public override X509Certificate2 X509Certificate
  37. {
  38. get;
  39. set;
  40. }
  41. [Parameter(Position = 1, ValueFromPipelineByPropertyName = true, Mandatory = true, ParameterSetName = NewExtensionUsingThumbprintParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.CertificateThumbprintHelpMessage)]
  42. [ValidateNotNullOrEmpty]
  43. public override string CertificateThumbprint
  44. {
  45. get;
  46. set;
  47. }
  48. [Parameter(Position = 2, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.ThumbprintAlgorithmHelpMessage)]
  49. [Parameter(Position = 2, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionUsingThumbprintParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.ThumbprintAlgorithmHelpMessage)]
  50. [ValidateNotNullOrEmpty]
  51. public override string ThumbprintAlgorithm
  52. {
  53. get;
  54. set;
  55. }
  56. [Parameter(Position = 3, ValueFromPipelineByPropertyName = true, Mandatory = true, ParameterSetName = NewExtensionParameterSetName, HelpMessage = "Remote Desktop Credential")]
  57. [Parameter(Position = 3, ValueFromPipelineByPropertyName = true, Mandatory = true, ParameterSetName = NewExtensionUsingThumbprintParameterSetName, HelpMessage = "Remote Desktop Credential")]
  58. public override PSCredential Credential
  59. {
  60. get;
  61. set;
  62. }
  63. [Parameter(Position = 4, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionParameterSetName, HelpMessage = "Remote Desktop User Expiration Date")]
  64. [Parameter(Position = 4, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionUsingThumbprintParameterSetName, HelpMessage = "Remote Desktop User Expiration Date")]
  65. [ValidateNotNullOrEmpty]
  66. public override DateTime Expiration
  67. {
  68. get;
  69. set;
  70. }
  71. [Parameter(Position = 5, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.VersionHelpMessage)]
  72. [Parameter(Position = 5, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionUsingThumbprintParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.VersionHelpMessage)]
  73. [ValidateNotNullOrEmpty]
  74. public override string Version
  75. {
  76. get;
  77. set;
  78. }
  79. [Parameter(Position = 6, Mandatory = false, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.ExtensionIdHelpMessage)]
  80. [Parameter(Position = 6, Mandatory = false, ValueFromPipelineByPropertyName = true, ParameterSetName = NewExtensionUsingThumbprintParameterSetName, HelpMessage = ExtensionParameterPropertyHelper.ExtensionIdHelpMessage)]
  81. [ValidateNotNullOrEmpty]
  82. public override string ExtensionId
  83. {
  84. get;
  85. set;
  86. }
  87. protected override void ValidateParameters()
  88. {
  89. base.ValidateParameters();
  90. ValidateThumbprint(false);
  91. Expiration = Expiration.Equals(default(DateTime)) ? DateTime.Now.AddMonths(12) : Expiration;
  92. ValidateConfiguration();
  93. }
  94. public void ExecuteCommand()
  95. {
  96. ValidateParameters();
  97. WriteObject(new ExtensionConfigurationInput
  98. {
  99. Id = ExtensionId,
  100. CertificateThumbprint = CertificateThumbprint,
  101. ThumbprintAlgorithm = ThumbprintAlgorithm,
  102. ProviderNameSpace = ProviderNamespace,
  103. Type = ExtensionName,
  104. PublicConfiguration = PublicConfiguration,
  105. PrivateConfiguration = PrivateConfiguration,
  106. X509Certificate = X509Certificate,
  107. Version = Version,
  108. Roles = new ExtensionRoleList(Role != null && Role.Any() ? Role.Select(r => new ExtensionRole(r)) : Enumerable.Repeat(new ExtensionRole(), 1))
  109. });
  110. }
  111. protected override void OnProcessRecord()
  112. {
  113. ExecuteCommand();
  114. }
  115. }
  116. }