예제 #1
0
        /// <summary> Rollbacks lync action.</summary>
        /// <param name="action"> The action.</param>
        /// <param name="runspace"> The runspace.</param>
        private void RollbackAction(TransactionAction action, Runspace runspace)
        {
            HostedSolutionLog.LogInfo("Rollback action: {0}", action.ActionType);
            switch (action.ActionType)
            {
            case TransactionAction.TransactionActionTypes.LyncNewSipDomain:
                DeleteSipDomain(runspace, action.Id);
                break;

            case TransactionAction.TransactionActionTypes.LyncNewUser:
                DeleteUser(runspace, action.Id);
                break;

            case TransactionAction.TransactionActionTypes.LyncNewConferencingPolicy:
                DeleteConferencingPolicy(runspace, action.Id);
                break;

            case TransactionAction.TransactionActionTypes.LyncNewExternalAccessPolicy:
                DeleteExternalAccessPolicy(runspace, action.Id);
                break;

            case TransactionAction.TransactionActionTypes.LyncNewMobilityPolicy:
                DeleteMobilityPolicy(runspace, action.Id);
                break;
            }
        }
        /// <summary>Opens PowerShell runspace.</summary>
        /// <returns>The runspace.</returns>
        private Runspace OpenRunspace()
        {
            HostedSolutionLog.LogStart("OpenRunspace");

            if (runspaceConfiguration == null)
            {
                runspaceConfiguration = RunspaceConfiguration.Create();
                PSSnapInException exception;
                runspaceConfiguration.AddPSSnapIn(SharepointSnapInName, out exception);
                HostedSolutionLog.LogInfo("Sharepoint snapin loaded");

                if (exception != null)
                {
                    HostedSolutionLog.LogWarning("SnapIn error", exception);
                }
            }

            Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);

            runspace.Open();
            runspace.SessionStateProxy.SetVariable("ConfirmPreference", "none");
            HostedSolutionLog.LogEnd("OpenRunspace");

            return(runspace);
        }
        public override void SetPeoplePickerOu(string site, string ou)
        {
            HostedSolutionLog.LogStart("SetPeoplePickerOu");
            HostedSolutionLog.LogInfo("  Site: {0}", site);
            HostedSolutionLog.LogInfo("  OU: {0}", ou);

            Runspace runSpace = null;

            try
            {
                List <SharePointSiteCollection> siteCollections = new List <SharePointSiteCollection>();

                runSpace = OpenRunspace();
                Command cmd = new Command("Set-SPSite");
                cmd.Parameters.Add("Identity", site);
                cmd.Parameters.Add("UserAccountDirectoryPath", ou);
                ExecuteShellCommand(runSpace, cmd);
            }
            finally
            {
                CloseRunspace(runSpace);
            }

            HostedSolutionLog.LogEnd("SetPeoplePickerOu");
        }