public override void ExecuteCmdlet() { if (ShouldProcess(this.ModuleId, Properties.Resources.AddIotHubModule)) { IotHubDescription iotHubDescription; if (ParameterSetName.Equals(InputObjectParameterSet)) { this.ResourceGroupName = this.InputObject.Resourcegroup; this.IotHubName = this.InputObject.Name; iotHubDescription = IotHubUtils.ConvertObject <PSIotHub, IotHubDescription>(this.InputObject); } else { if (ParameterSetName.Equals(ResourceIdParameterSet)) { this.ResourceGroupName = IotHubUtils.GetResourceGroupName(this.ResourceId); this.IotHubName = IotHubUtils.GetIotHubName(this.ResourceId); } iotHubDescription = this.IotHubClient.IotHubResource.Get(this.ResourceGroupName, this.IotHubName); } IEnumerable <SharedAccessSignatureAuthorizationRule> authPolicies = this.IotHubClient.IotHubResource.ListKeys(this.ResourceGroupName, this.IotHubName); SharedAccessSignatureAuthorizationRule policy = IotHubUtils.GetPolicy(authPolicies, PSAccessRights.RegistryWrite); PSIotHubConnectionString psIotHubConnectionString = IotHubUtils.ToPSIotHubConnectionString(policy, iotHubDescription.Properties.HostName); PSAuthenticationMechanism auth = new PSAuthenticationMechanism(); PSModule module = new PSModule(); module.Id = this.ModuleId; module.DeviceId = this.DeviceId; switch (this.AuthMethod) { case PSDeviceAuthType.x509_thumbprint: auth.Type = PSAuthenticationType.SelfSigned; auth.X509Thumbprint = new PSX509Thumbprint(); auth.X509Thumbprint.PrimaryThumbprint = this.authTypeDynamicParameter.PrimaryThumbprint; auth.X509Thumbprint.SecondaryThumbprint = this.authTypeDynamicParameter.SecondaryThumbprint; break; case PSDeviceAuthType.x509_ca: auth.Type = PSAuthenticationType.CertificateAuthority; break; default: auth.SymmetricKey = new PSSymmetricKey(); auth.Type = PSAuthenticationType.Sas; break; } module.Authentication = auth; RegistryManager registryManager = RegistryManager.CreateFromConnectionString(psIotHubConnectionString.PrimaryConnectionString); this.WriteObject(IotHubDataPlaneUtils.ToPSModule(registryManager.AddModuleAsync(IotHubDataPlaneUtils.ToModule(module)).GetAwaiter().GetResult())); } }