Skip Ribbon Commands
Skip to main content

Ondrej Sevecek's Blog

:

Engineering and troubleshooting by Directory Master!
Ondrej Sevecek's Blog > Posts > Oprava nefunkčních Document ID na SharePointu
září 03
Oprava nefunkčních Document ID na SharePointu

Uf, po cca 6 hodinách práce se mi podařilo rozchodit rozbitou službu Document ID na SharePointu. Zřejmě už byla někdy (polo)zapnutá, takže se nechtěla znovu pořádně zapnout. Sloupečky byly definovány a připojeny na odpovídající content type (typy obsahu), ale nechtělo to dále pokračovat.

Tak jsem tu fíčuru vypnul, napsal si skript, který ty sloupečky nejprve odpojil ze všech content type, na kterých byly připojeny a potom jsem tu fíčuru zase zapnul a juchů, už to fičí.

Skript pro zájemce zde. Ano, skoro bez vysvětlení a na vlastní nebezpečí. Prostě to odpojí sloupečky _dlc_DocId od všech content type a pak je to natvrdo smaže:

# yes, turn this to $true if you want the script to do its job
# just a matter of security to look at the state of the matters first
$delete = $false

$site = get-spsite http://intranet.contoso.com

$site.RootWeb.ContentTypes | % { 
  
  $oneCT = $_
  $fieldsToDelete = $oneCT.Fields | ? { $_.InternalName -like '_dlc_DocId*' } | Select -Expand InternalName

  $fieldsToDelete | % { ([string] $_).Trim() } | ? { $_ -ne '' } | % {

    echo ('Deleting: {0} | {1}' -f $oneCT.Name, $_)
    
    if ($delete) { 

      $oneCT.FieldLinks.Delete($_)
      $oneCT.Update()
    }
  }
}

# 
# You must run the following part several times manually, because as we modify a field and .update() it
# the Fields collection gets updated and further enumerations are blocked with an exception
#

$site.RootWeb.Fields | ? { $_.InternalName -like '_dlc_DocId*' } | % { 

  echo ('Deleting: {0} | readOnly = {1} | hidden = {2} | allowDelete = {3}' -f $_.InternalName, $_.ReadOnlyField, $_.Hidden, $_.AllowDeletion)
  
  if ($delete) { 

    if ($_.ReadOnlyField) { 
 
      $_.ReadOnlyField = $false
      $_.Update()
    }

    if ($_.Hidden) {

      $_.Hidden = $false
      $_.Update()

    }

    if ($_.AllowDeletion -ne $true) {

      $_.AllowDeletion = $true
      $_.Update()
    }

    $_.Delete()
  }
}

Comments

There are no comments for this post.

Add Comment

Title


Pole Title nemusíte vyplňovat, doplní se to samo na stejnou hodnotu jako je nadpis článku.

Author *


Pole Author nesmí být stejné jako pole Title! Mám to tu jako ochranu proti spamu. Roboti to nevyplní dobře :-)

Body *


Type number two as digit *


Semhle vyplňte číslici dvě. Předchozí antispemové pole nefunguje úplně dokonale, zdá se, že jsou i spamery, které pochopily, že je občas potřeba vyplnit autora :-)

Email


Emailová adresa, pokud na ni chcete ode mě dostat odpověď. Nikdo jiný než já vaši emailovou adresu neuvidí.

Attachments