2017-04-17 2 views
0

모든 사이트에서 용어를 기반으로 사용중인 MMS 용어 집합을 가져 오도록했습니다 (목록의 항목에서 MMS 열의 null 값이 아닌). 해당 MMS 조건 집합 만 다른 Sharepoint 환경으로 마이그레이션 될 수 있습니다. 기본 수준에 나는 스크립트셰어 포인트 사이트에서 사용중인 용어 집합 이름 가져 오기

$FieldCollection= (Get-SPWeb https:/sharepoint.com/sites/pssl/mgmt).Lists.Fields 
$MetadataField = New-Object psobject 
$MetadataField | Add-Member -MemberType NoteProperty -Name "ParentListUrl" -value "" 
$MetadataField | Add-Member -MemberType NoteProperty -Name "ParentListTitle" -value "" 
$MetadataField | Add-Member -MemberType NoteProperty -Name "FieldTitle" -value "" 
$MetadataField | Add-Member -MemberType NoteProperty -Name "FieldId" -value "" 

$matches = @(); 
foreach($field in $FieldCollection) 
{ 
    if($field.GetType().Name -ne "TaxonomyField"){ 
     continue; 
    } 
    #if($field.TermSetId.ToString() -ne $TermSet.Id.ToString()){continue;} 
    $tf = $MetadataField | Select-Object *; 
    $tf.ParentListUrl = $field.ParentList.ParentWeb.Url; 
    $tf.ParentListTitle = $field.ParentList.Title; 
    $tf.FieldTitle = $field.Title; 
    $tf.FieldId = $field.ID; 

    $matches += $tf; 
} 
return $matches; 

이하로 사용하고 있지만 그것은 단지 목록에 정의 된 메타 데이터 열을 관리 반환하지만,이 목록에 사용되는 없습니다. 아무도 내가이 일을 성취 할 수 있도록 도와 줄 수 없습니까?

답변

0

저는 Sharepoint API의 전문가는 아니지만 문제가 도움이된다는 것과 이해할 수없는 것을 이해하려고합니다.

루프 앞에 객체 $MetadataField을 만든 다음 $MetadataField | Select-Object * 복제본을 만든 다음 배열에 추가하는 것이 좋습니다. 당신이 말하는 것처럼

, 반환 된 객체는 내가 위의 샘플에서 기대되는 ParentListUrl, ParentListTitle, FieldTitleFieldId의 컬럼 만이 있어야합니다. 당신이 찾고있는 것을 더 자세히 설명해 줄 수 있습니까? 어쩌면 전체 함수를 질문에 반영하고 반환 된 기대치를 게시 할 수 있습니다. 이런 식으로 나는 너를 도우려고 노력할 수있다.

Btw이면 ;이 필요하지 않으므로 루프 내에 개체의 새 인스턴스를 만들어야합니다. 동일한 방법을 사용하거나 먼저 사용자 지정 개체의 속성을 구동하는 해시 키를 만들 수 있습니다. 예를 들어 루프에서 다음을 조정하십시오.

[email protected]{ 
    Property1="Value1" 
    Property2="Value2" 
} 

New-Object -Type PSObject -Property $hash 

은 또한 당신은 다음 배열에 추가 건너 뛸 수 있습니다 나는 내 예제에서처럼 그냥 출력에 쓰기, 추가 처리없이 반환에 직접 발견 된 각 항목을 작동합니다. 좀 더 명확하게하기 위해, 함수에 내 예제 주위에 루프를 넣고 실행하면 Property1과 Property2가있는 사용자 정의 객체로 레코드 세트를 얻습니다.