protected override void ProcessRecord() { try { ClusterConnection.SecurityCredentialsBuilder securityCredentialsBuilder = null; if (this.WindowsCredential) { securityCredentialsBuilder = new ClusterConnection.WindowsSecurityCredentialsBuilder( this.ClusterSpn); } else if (this.X509Credential) { securityCredentialsBuilder = new ClusterConnection.X509SecurityCredentialsBuilder( this.ServerCertThumbprint, this.ServerCommonName, this.FindType, this.FindValue, this.StoreLocation, this.StoreName); } else if (this.DSTS) { bool interactive = true; if (this.Interactive.HasValue) { interactive = this.Interactive.GetValueOrDefault(); } securityCredentialsBuilder = new ClusterConnection.DSTSCredentialsBuilder( this.ServerCommonName, this.ServerCertThumbprint, this.MetaDataEndpoint, interactive, this.CloudServiceName, this.CloudServiceDNSNames); } else if (this.AzureActiveDirectory) { securityCredentialsBuilder = new ClusterConnection.AadCredentialsBuilder( this.ServerCommonName, this.ServerCertThumbprint, this.SecurityToken); } // We need to provide a custom FabricClientSettingsBuilder, // because we want to override HealthReportSendInterval with zero or user's input value. ClusterConnection.FabricClientSettingsBuilder fabricClientSettingsBuilder = this.CreateFabricClientSettingsBuilder(); IClusterConnection clusterConnection = new ClusterConnection( new ClusterConnection.FabricClientBuilder( securityCredentialsBuilder, fabricClientSettingsBuilder, this.ConnectionEndpoint), this.GetMetadata); try { if (this.GetMetadata) { clusterConnection.InitializeClaimsMetadata(this.GetTimeout()); } else if (this.SkipChecks.GetValueOrDefault() == false) { this.TestClusterConnection( clusterConnection, this.AllowNetworkConnectionOnly); } } catch (Exception e) { this.ThrowTerminatingError( e, Constants.CreateClusterConnectionErrorId, null); } this.SetClusterConnection(clusterConnection); this.WriteObject(this.FormatOutput(clusterConnection)); } catch (Exception exception) { this.ThrowTerminatingError( exception, Constants.CreateClusterConnectionErrorId, null); } }