Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement