/// <summary> /// InternalProcessRecord method override /// </summary> protected override void InternalProcessRecord() { SPFarm farm = SPFarm.Local; if (null == farm) { ThrowTerminatingError(new InvalidOperationException("SharePoint server farm not found."), ErrorCategory.ResourceUnavailable, this); } IdentityServiceProxy serviceProxy = farm.ServiceProxies.GetValue <IdentityServiceProxy>(); if (null == serviceProxy) { ThrowTerminatingError(new InvalidOperationException("Identity Web Service proxy not found."), ErrorCategory.ResourceUnavailable, this); } ServiceApplicationProxy existingServiceApplicationProxy = serviceProxy.ApplicationProxies.GetValue <ServiceApplicationProxy>(); if (null != existingServiceApplicationProxy) { WriteError(new InvalidOperationException("Identity Web service application proxy exists."), ErrorCategory.ResourceExists, existingServiceApplicationProxy); SkipProcessCurrentRecord(); } Uri serviceApplicationUri = null; if (this.ParameterSetName == UriParameterSetName) { serviceApplicationUri = m_Uri; } else if (this.ParameterSetName == ServiceApplicationParameterSetName) { SPServiceApplication serviceApplication = m_ServiceApplicationPipeBind.Read(); if (null == serviceApplication) { WriteError(new InvalidOperationException("Service application not found."), ErrorCategory.ResourceExists, serviceApplication); SkipProcessCurrentRecord(); } ISharedServiceApplication sharedServiceApplication = serviceApplication as ISharedServiceApplication; if (null == sharedServiceApplication) { WriteError(new InvalidOperationException("Connecting to the specified service application is not supported."), ErrorCategory.ResourceExists, serviceApplication); SkipProcessCurrentRecord(); } serviceApplicationUri = sharedServiceApplication.Uri; } else { ThrowTerminatingError(new InvalidOperationException("Invalid parameter set."), ErrorCategory.InvalidArgument, this); } if ((null != serviceApplicationUri) && (ShouldProcess(this.Name))) { ServiceApplicationProxy serviceApplicationProxy = new ServiceApplicationProxy(this.Name, serviceProxy, serviceApplicationUri); serviceApplicationProxy.Provision(); WriteObject(serviceApplicationProxy); } }
protected override void InternalProcessRecord() { #region validation stuff // ensure can hit farm SPFarm farm = SPFarm.Local; if (farm == null) { ThrowTerminatingError(new InvalidOperationException("SharePoint farm not found."), ErrorCategory.ResourceUnavailable, this); SkipProcessCurrentRecord(); } // ensure proxy installed CalcServiceProxy serviceProxy = farm.ServiceProxies.GetValue <CalcServiceProxy>(); if (serviceProxy == null) { ThrowTerminatingError(new InvalidOperationException("Wingtip Calc Service Proxy not found (likely not installed)."), ErrorCategory.NotInstalled, this); SkipProcessCurrentRecord(); } // ensure can hit service application CalcServiceApplicationProxy existingServiceAppProxy = serviceProxy.ApplicationProxies.GetValue <CalcServiceApplicationProxy>(); if (existingServiceAppProxy != null) { ThrowTerminatingError(new InvalidOperationException("Wingtip Calc Service Application Proxy already exists."), ErrorCategory.ResourceExists, this); SkipProcessCurrentRecord(); } #endregion Uri serviceApplicationAddress = null; if (ParameterSetName == "Uri") { serviceApplicationAddress = _uri; } else if (ParameterSetName == "ServiceApplication") { // make sure can get a refernce to service app SPServiceApplication serviceApp = ServiceApplication.Read(); if (serviceApp == null) { WriteError(new InvalidOperationException("Service application not found."), ErrorCategory.ResourceExists, serviceApp); SkipProcessCurrentRecord(); } // make sure can connect to service app ISharedServiceApplication sharedServiceApp = serviceApp as ISharedServiceApplication; if (sharedServiceApp == null) { WriteError(new InvalidOperationException("Service application not found."), ErrorCategory.ResourceExists, serviceApp); SkipProcessCurrentRecord(); } serviceApplicationAddress = sharedServiceApp.Uri; } else { ThrowTerminatingError(new InvalidOperationException("Invalid parameter set."), ErrorCategory.InvalidArgument, this); } // create the service app proxy if ((serviceApplicationAddress != null) && ShouldProcess(this.Name)) { CalcServiceApplicationProxy serviceAppProxy = new CalcServiceApplicationProxy( this.Name, serviceProxy, serviceApplicationAddress); // provision the service app proxy serviceAppProxy.Provision(); // pass service app proxy back to the PowerShell WriteObject(serviceAppProxy); } }