SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Managed Metadata - Benutzung

Geprüfte Antwort Dieser Beitrag hat 11 Antworten

Ohne Rang
129 Beiträge
Jonas Großholz erstellt 18 Aug. 2016 09:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

gibt es eine Möglichkeit auf einfachem Weg herauszufinden, wo die angelegten Managed Metadate benutzt werden? Ich bräuchte die Info, da ich einen Baum löschen möchte und nicht weiß, ob dieser in Gebrauch ist.

Danke + Grüße
Jonas

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 Aug. 2016 09:37
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich bin mir ziemlich sicher, daß die Frage des "ob" keine ist. D.h. man kann einen Zweig nicht löschen, wenn er von einer Spalte verwendet wird (das kann man ja schnell ausprobieren). Für die Frage nach dem "wo" weiß ich allerdings keine Lösung.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
129 Beiträge
Jonas Großholz Als Antwort am 18 Aug. 2016 10:02
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,

danke für deine Antwort.

Leider lässt sich ein aktuell in Benutzung befindlicher Termset löschen. Wenn ich im Nachgang dann ein Element mit dem Managed Metadata bearbeiten möchte, wird dieses grau angezeigt und ist nicht bearbeitbar...

Ich hoffe somit auf weitere Antworten :-)

Grüße
Jonas

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 Aug. 2016 10:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich meinte eigentlich mich an eine entsprechende Meldung zu erinnern. Aber wahrscheinlich hast Du es ja ausprobiert...

Ich würde mir ein PowerShell-Script bauen, das alle Listenspalten nach der TermSet-ID durchsucht.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
129 Beiträge
Jonas Großholz Als Antwort am 18 Aug. 2016 10:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ja, ich erhalte eine Meldung:

 

Diese bezieht sich aber eher auf die Managed Metadata an sich, oder?

Könntest Du mir bzgl. PowerShell ggf. eine Starthilfe geben?

Grüße
Jonas

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 Aug. 2016 10:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hast Du administrativen Zugriff auf einen SharePoint-Server? Dann kann das in PowerShell ungefähr so gehen (ungetestet!):

Add-PSSnapin Microsoft.SharePoint.PowerShell
$web = Get-SPWeb http://dein.sharepoint.de/sites/website1
foreach ($list in $web.Lists) {
foreach ($field in $list.Fields) {
if ($field.GetType().FullName -eq "Microsoft.SharePoint.Taxonomy.TaxonomyField) {
if ($field.TermSetId -eq "<die Guid des gesuchten Termset>") {
Write-Host "Gefunden: Spalte $($field.Title) in Liste $($list.Title)"
}
}
}
}

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
129 Beiträge
Jonas Großholz Als Antwort am 18 Aug. 2016 12:00
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Nochmals vielen Dank!

Leider kommt mit dem Befehl nichts raus, auch bei Metadaten, bei denen ich weiß, dass sie verwendet werden.

$web = Get-SPWeb https://mein.sharepoint.de

foreach

 

 

($list in $web.Lists){

 

 

foreach ($field in $list.Fields){

 

 

if ($field.GetType().FullName -eq "Microsoft.SharePoint.Taxonomy.TaxonomyField") {

 

 

if ($field.TermSetId -eq "<betreffende GUID>" ) {

 

 

Write-Host "Gefunden: Spalte $($field.Title) in Liste $($list.Title)"

}

}

}

}

Könntest du oder jemand anderes das bitte mal testen?

Danke + Grüße
Jonas

Ohne Rang
129 Beiträge
Jonas Großholz Als Antwort am 18 Aug. 2016 13:40
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Meinen ersten Fehler habe ich schon gefunden... Das Skript funktioniert nur auf Websitesammlungs-Ebene und nur ohne die "< >" in der TermSetId.
Hat jemand eine Idee, wie ich das ganze auf der Web-Application zum Laufen bekomme?

$web = Get-SPWebApplication https://mein.sharepoint.de 

foreach

 

 

 

($site in $web.

Sites) {

foreach

 

 

 

($list in $site.

Lists){ 

foreach ($field in $list.

Fields){ 

if ($field.GetType().FullName -eq "Microsoft.SharePoint.Taxonomy.TaxonomyField"

) { 

if ($field.TermSetId -eq "meine GUID"

) {  

Write-Host "Gefunden: Spalte $($field.Title) in Liste $($list.Title)

"

}

}

}

}

}

  

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 Aug. 2016 13:58
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Also ein bißchen was mußt Du schon selbst machen. Hole Dir mit Get-SPWebApplication die Application, gehe mit foreach durch die Sites (=Websitesammlungen) und dann durch die Websites per AllWebs.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
129 Beiträge
Jonas Großholz Als Antwort am 18 Aug. 2016 14:45
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Vielen Dank - der Anstoß bzgl. AllWebs hat mir gefehlt.

$webapp = Get-SPWebApplication https://mein.sharepoint.de
foreach ($web in $webapp.Sites) {
    foreach ($site in $web.AllWebs) {
        foreach ($list in $site.Lists) {
            foreach ($field in $list.Fields){
            if ($field.GetType().FullName -eq "Microsoft.SharePoint.Taxonomy.TaxonomyField") {
                if ($field.TermSetId -eq "betreffende GUID" ) {
                    Write-Host "Gefunden: Spalte $($field.Title) in Liste $($list.Title) auf Seite $($site.Url)"
                    }
            }
        }
    }
}}

Es kann hier auf Ebene der TermSets gesucht werden - UnterTerms werden auch gefunden.

Grüße
Jonas

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 Aug. 2016 15:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Freut mich, wenn es funktioniert. Nur eine kleine Anmerkung zur Namensgebung:

Websitesammlungen heißen im Objektmodell SPSite. Websites heißen SPWeb. Deine Variablen heißen genau andersrum.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
129 Beiträge
Jonas Großholz Als Antwort am 18 Aug. 2016 15:16
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Oh, danke für den Hinweis. Hier die korrigierte Version:

$webapp = Get-SPWebApplication https://mein.sharepoint.de
foreach ($site in $webapp.Sites) {
    foreach ($web in $site.AllWebs) {
        foreach ($list in $web.Lists) {
            foreach ($field in $list.Fields){
            if ($field.GetType().FullName -eq "Microsoft.SharePoint.Taxonomy.TaxonomyField") {
                if ($field.TermSetId -eq "betreffende GUID" ) {
                    Write-Host "Gefunden: Spalte $($field.Title) in Liste $($list.Title) auf Seite $($web.Url)"
                    }
            }
        }
    }
}}