$webUrl = "http://acme.com/sites/acme/documentstore" $listName = "Transformer Renewal Tracking" $columnName = "CRM Data" function setPrivateField($type, $fieldName, $obj, $val){ $bindFlags = [System.Reflection.BindingFlags]::Instance -bor [System.Reflection.BindingFlags]::Public -bor [System.Reflection.BindingFlags]::NonPublic -bor [System.Reflection.BindingFlags]::Static $fi = $type.GetField($fieldName, $bindFlags) $fi.SetValue($obj, $val) } function getPrivateField($type, $fieldName, $obj){ $bindFlags = [System.Reflection.BindingFlags]::Instance -bor [System.Reflection.BindingFlags]::Public -bor [System.Reflection.BindingFlags]::NonPublic -bor [System.Reflection.BindingFlags]::Static $fi = $type.GetField($fieldName, $bindFlags) $ret = $fi.GetValue($obj) return $ret } function showPrivateField($type, $fieldName, $obj){ $val = getPrivateField $type $fieldName $obj $valStr = "" if($val -ne $null) { $valStr = $val.ToString() } Write-Host "$($fieldName): $($valStr)" } $w = get-spweb $webUrl $l = $w.Lists.TryGetList($listName) $ff = $l.Fields.GetField($columnName) $asmSP = [System.Reflection.Assembly]::Load("Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") $ent = Get-SPBusinessDataCatalogMetadataObject -BdcObjectType "Entity" -ServiceContext $webUrl -Name $ff.EntityName -Namespace $ff.EntityNamespace $sysint = $null foreach($lobSystemInstance in $ent.LobSystem.LobSystemInstances){ if($lobSystemInstance.Name -eq $ff.SystemInstanceName){ $sysint = $lobSystemInstance break } } $tt = $asmSP.GetTypes()|?{$_.Name -eq "BusinessDataSynchronizerJob" } $job = [System.Activator]::CreateInstance($tt) setPrivateField $tt "WebId" $job $w.ID setPrivateField $tt "ListId" $job $l.ID setPrivateField $tt "ColumnName" $job $ff.InternalName setPrivateField $tt "ColumnTitle" $job $ff.Title setPrivateField $tt "Web" $job $w showPrivateField $tt "WebId" $job showPrivateField $tt "ListId" $job showPrivateField $tt "ColumnName" $job showPrivateField $tt "ColumnTitle" $job showPrivateField $tt "Web" $job $job.Start($w.Site) $tt2 = $asmSP.GetTypes()|?{$_.Name -eq "LongRunningOperationJob" } $bf = [System.Reflection.BindingFlags]::Static -bor [System.Reflection.BindingFlags]::Public $mi = $tt2.GetMethods($bf)|?{$_.Name -eq "GetJobStatus" } $params = $w.Site, $null, $job.JobId $params[1] = [Microsoft.SharePoint.SPContext]::GetContext($w) $jobStatus = $mi.Invoke($null, $params) while($jobStatus.IsActive){ Write-Host $jobStatus.WaitMessage Start-Sleep -Seconds 60 $jobStatus = $mi.Invoke($null, $params) } Write-Host $jobStatus.StatusDescription