0

Powershell + Sharepoint Powershell Extensions を使用して、Sharepoint 2013 に新しい Managed Metadata Property を追加する必要があります。

私はC#を使用してこれを行いました。

すべての SharePoint 管理プロパティを取得するには、次のようにしました。

 private static string GetAllSPManagedProperties(string searchApplication)
        {
            RunspaceConfiguration config = RunspaceConfiguration.Create();
            PSSnapInException OExSnapIn = null;
            PSSnapInInfo pssnap = config.AddPSSnapIn("Microsoft.SharePoint.PowerShell", out OExSnapIn);
            //create powershell runspace
            Runspace cmdlet = RunspaceFactory.CreateRunspace(config);
            cmdlet.Open();
            RunspaceInvoke scriptInvoker = new RunspaceInvoke(cmdlet);
            // set powershell execution policy to unrestricted
            scriptInvoker.Invoke("Set-ExecutionPolicy Unrestricted");
            // create a pipeline and load it with command object
            Pipeline pipeline = cmdlet.CreatePipeline();
            Command cmd = new Command("Get-SPEnterpriseSearchMetadataManagedProperty");
            pipeline.Commands.Add(cmd);
            CommandParameter cmdParam = new CommandParameter("SearchApplication", searchApplication);
            cmd.Parameters.Add(cmdParam);
            //pipeline.Commands.Add("Out-String");
            // this will format the output
            IEnumerable<PSObject> output = pipeline.Invoke();
            pipeline.Stop();
            cmdlet.Close();
            // process each object in the output and append to stringbuilder  
            StringBuilder results = new StringBuilder();
            foreach (PSObject obj in output)
            {
                var typeNames = obj.TypeNames;

                var p1 = obj.Properties["ID"].Value;            // "AboutMe"    object {string}
                var p2 = obj.Properties["ManagedType"].Value;   // Text object {Microsoft.Office.Server.Search.Administration.ManagedDataType}
                var p3 = obj.Properties["PID"].Value;           // 26           object {int}
                var p4 = obj.Properties["Name"].Value;          // "AboutMe"    object {string}
                var p5 = obj.Properties["HasMultipleValues"].Value;         // true object {bool}
                string managedTypeName = (string)p2.ToString();

                results.AppendLine(obj.ToString());
            }
            return results.ToString();
        }

問題は、選択した管理メタデータ プロパティのこのフラグ「HasMultipleValues」をプログラムで設定しようとしていることです。

obj.Properties["HasMultipleValues"].Value =  true;

私はそれを行う方法がわかりません。PSObject の Update メソッド (pipeline.Invoke() によって返される) を見つけたいと思っていましたが、残念ながら有用なものは見つかりませんでした。

私の質問は、ManagedMetadataProperty のプロパティを設定することは可能ですか?

4

1 に答える 1