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 のプロパティを設定することは可能ですか?