„Benutzerinformationsliste“ – „User Information List“ – „UserInfo“

Was ist die „Benutzerinformationsliste“ – „User Information List“ – „UserInfo“?

Die „Benutzerinformationsliste“ („Title“ in deutschen Systemen) bzw. „User Information List“ („Title“ in englischen Systemen) bzw. „UserInfo“ („EntityTypeName“ in PowerShell bzw. Anzeige in MS-Access) ist eine versteckte SharePoint-Liste.

In jeder Websitesammlung existiert diese UserInfo-Liste (für jede Sitecollection eine eigene), auf die der Websitesammlungsadministrator zugreifen kann.

Diese Liste enthält Zeilen mit Benutzerinformationen und unter anderem folgenden Metainformationen (je nach dem, auf welche Art diese Liste angezeigt wird, s. weiter unten):

  • PowerShell (Get-SpUser)
    • Name
    • Email
    • Notes
    • LoginName
    • Groups
    • OwnedGroups
    • ID
    • Xml
    • RawSid
    • Sid
    • SystemUserKey
    • UserId
    • IsSiteAdmin
    • IsSiteAuditor
    • IsDomainGroup
    • IsApplicationPrincipal
    • IsHiddenInUI
    • IsShareByEmailGuestUser
    • RequireRequestToken
    • AllowBrowseUserInfo
    • IsUserSettingsSyncedWithProvider
    • Alerts
    • UserToken
    • RegionalSettings
    • LanguageSettings
    • ParentWeb
    • Roles
    • UserLogin
    • DisplayName
  • MS-Access
    • ID
    • Name
    • Konto
    • Geschäftliche E-Mail-Adresse
    • Handy
    • Info
    • SIP-Adresse
    • Ist Websiteadministrator
    • Gelöscht
    • Ausgeblendet
    • Foto
    • Abteilung
    • Titel
    • Vorname
    • Nachname
    • Telefon (geschäftlich)
    • Benutzername
    • Website
    • Fragen
    • Büro
    • Bildzeitstempel
    • Bildplatzhaltestatus
    • Bildplatzhalter-Synchronisierungsstatus
    • Firma
  • SharePoint Web-GUI
    • Name (DisplayName)
    • Info
    • Titel
    • Abteilung

Es wird jedes mal ein neuer Eintrag mit Benutzerinformationen erzeugt (falls der Benutzer noch nicht in der Liste), sobald jemand auf ein Element bzw. die Site berechtigt wird, bzw. sich auf der Site anmeldet.

Beispiel: In der Liste „User Information List“ einer frisch erstellten SiteCollection befinden sich die initial darauf berechtigten Personen (wie SiteCollection-Admins, Site-Besitzer etc.). Wenn ich nun, als WebApplikation-Admin auf die SiteCollection zum ersten mal zugreife (perspielsweise per PowerShell-CMDlet Get-SpUser), dann wird meine aktuelle Benutzerkennung mit den dazugehörigen Metainformationen in diese „User Information List“ eingetragen. Die Informationen kommen entweder aus dem Benutzerprofildienst (User Profile Service) oder aus dem AD.

Wie kann ich die „Benutzerinformationsliste“ – „User Information List“ – „UserInfo“ anzeigen

Es gibt mehrere Arten, die versteckte Liste mit dem Titel „Benutzerinformationsliste“ bzw. „User Information List“ anzuzeigen. Es werden, je nach Zugriffsart mehr oder weniger Informationen angezeigt.

„Benutzerinformationsliste“ direkt im SharePoint anzeigen

Die Liste „Benutzerinformationsliste“ bzw. „User Information List“ kann sehr einfach und schnell direkt in der SharePoint-WebGUI angezeigt werden. Die Anzahl der Spalten bzw. der Attribute ist hier allerdings sehr gering.

Die URL der Sitecollection muss um folgenden Teil (ein aus diesen drei) erweitert werden.

  • _catalogs/users/simple.aspx
  • _catalogs/users/detail.aspx
  • _layouts/15/people.aspx?MembershipGroupId=0

Bei den beiden ersten URLs werden die Benutzerlisten nur angezeigt, bei der dritten URL kann man den Benutzer auch komplett aus diesen Listen und somit auch aus der SiteCollection entfernen.

Beispiel für eine zusammengesetzte URL:
https://sharpoint-portal.de/sitecollection/_layouts/15/people.aspx?MembershipGroupId=0

Benutzer und Gruppen - Alle Personen - _layouts-15-people.aspx-MembershipGroupId-0 - Benutzerinformationsliste - SharePoint 2013

„Benutzerinformationsliste“ in MS-Access anzeigen

Es ist möglich eine SharePoint-Liste, sowie die uns hier interessierende „Benutzerinformationsliste“, in Microsoft Access zu öffnen.

Es werden umfangreiche, in anderen Zugriffsarten nicht vorhandene, Metainformationen (wie Telefon) angezeigt.

Benutzerinformationsliste - UserInfo - Name - Konto - Geschäftliche E-Mail-Adresse - MS Access

 

Neue, leere Access-Datenbank erstellen.

Reiter „Externe Daten“ > Button „Weitere Optionen“ > „SharePoint-Liste

Reiter Externe Daten - Button Weitere Optionen - SharePoint-Liste - MS Access

URL der SiteCollection einfügen, die zweite Option „Erstellen Sie eine Verknüpfung zur Datenquelle, indem Sie eine verknüpfte Tabelle erstellen“ auswählen, „Weiter“ klicken.

Quelle und Ziel der Daten auswählen - Erstellen Sie eine Verknüpfung zur Datenquelle - MS Access

Liste „UserInfo“ auswählen und „OK„.

Wählen Sie die SharePoint-Listen aus, zu denen Sie eine Verknüpfung herstellen möchten - UserInfo - MS Access

„Benutzerinformationsliste“ in PowerShell anzeigen

Es ist zwar per PowerShell möglich, sich wie gewohnt den Inhalt der Liste „Benutzerinformationsliste“ bzw. „User Information List“ auszugeben (s.u).

$site = Get-SPSite "https://sharpoint-portal.de/sitecollection"
$web = $site.OpenWeb()
#$list = $web.lists["User Information List"]
$list = $web.lists["Benutzerinformationsliste"]
$list.Items | fl | Out-File c:\DumpUserInfoList.txt

 

Aber SharePoint bringt für PowerShell ein eigenes, dafür besser geeignetes CMD-let: Get-SpUser.

# UserInfo-Liste bzw. "User Information List" bzw. "Benutzerinformationsliste" anzeigen
# ----------------------------------------------------
$WebURL = "https://sharpoint-portal.de/sitecollection"   #SiteCollection

Write-Verbose "SharePoint-Module werden geladen..."
Add-PSSnapin Microsoft.SharePoint.PowerShell

# Puffer (sonst werden z.B. Spalten rechts abgeschnitten in der Konsolen- und TXT-Ausgabe etc.)
$buffer = $host.ui.RawUI.BufferSize; $buffer.width = 3000; $buffer.height = 3000; $host.UI.RawUI.Set_BufferSize($buffer)

# Web-Objekt und List-Objekt aus den oberen Eingaben holen
$Web = Get-SPWeb $WebURL; Write-Verbose "Website: $Web"

# Alle User der SiteCollection ausgeben
#Ist die selbe Ausgabe wie: (Get-SpWeb $Web).SiteUsers
# Dieselben Einträge wie in "..._layouts/15/people.aspx?MembershipGroupId=0" und "..._catalogs/users/simple.aspx" und "..._catalogs/users/detail.aspx"
$user = $web | Get-SPUser -Limit ALL                 

# Benutzer mit Spalten ausgeben
#$user | ft -AutoSize *

# Benutzer mit den nötigsten Spalten in der Konsole ausgeben, sortiert nach ID
#$user | Sort ID | ft -AutoSize ID, UserLogin, DisplayName, Name, LoginName, SystemUserKey, IsSiteAdmin, IsSiteAuditor, IsDomainGroup, Email, Sid, Roles, Groups, OwnedGroups, IsShareByEmailGuestUser, RequireRequestToken, AllowBrowseUserInfo, IsUserSettingsSyncedWithProvider, Alerts, UserToken

# Benutzer mit den nötigsten Spalten in GridView ausgeben, sortiert nach DisplayName
$user | Sort DisplayName | Select ID, UserLogin, DisplayName, Name, LoginName, SystemUserKey, IsSiteAdmin, IsSiteAuditor, IsDomainGroup, Email, Sid, Roles, Groups, OwnedGroups, IsShareByEmailGuestUser, RequireRequestToken, AllowBrowseUserInfo, IsUserSettingsSyncedWithProvider, Alerts, UserToken | Out-GridView -Title "User Count:$($user.count)"

 

UserInfo - User Information List - Benutzerinformationsliste - Get-SpUser - Out-GridView - PowerShell

Anwendungsfall: „DisplayName“ korrigieren (Sync From AD)

 In manchen Fällen wird der DisplayName in der „User Information List“ nicht korrekt abgespeichert. Das Resultat ist: Der Name dieses Benutzers wird an vielen Stellen in dieser Websitesammlung falsch dargestellt (z.b. in der Form „Benutzerkennung@domain.com“ und nicht wie es korrekt wäre „Name, Vorname„.

Der Name kann per PowerShell korrigiert werden, bzw. vom AD synchronisiert werden. Dazu folgende Schritte durchführen.

Eventuell einen falschen Eintrag aus dem Benutzerprofildienst (User Profile Service = UPS) vorher entfernen.

# DisplayName aus dem AD ziehen und in SP aktualisieren
# ---------------------------------------------------------
$ProblemUserAccount = "Benutzerkennung"        #Benutzer-Kennung der Person, bei der der DisplayName nicht korrekt ist. Unten wird die Domäne dazu geschrieben.
$Domain = "@domain.de"            #Domäne (aus z.B. UserLogin oder LoginName)
$WebURL = "https://sharpoint-portal.de/sitecollection"   #SiteCollection

Write-Verbose "SharePoint-Module werden geladen..."
Add-PSSnapin Microsoft.SharePoint.PowerShell

# Puffer (sonst werden z.B. Spalten rechts abgeschnitten in der Konsolen- und TXT-Ausgabe etc.)
$buffer = $host.ui.RawUI.BufferSize; $buffer.width = 3000; $buffer.height = 3000; $host.UI.RawUI.Set_BufferSize($buffer)

# Web-Objekt und List-Objekt aus den oberen Eingaben holen
$Web = Get-SPWeb $WebURL; Write-Verbose "Website: $Web"

# Alle User der SiteCollection ausgeben
#Ist die selbe Ausgabe wie: (Get-SpWeb $Web).SiteUsers
# Dieselben Einträge wie in "..._layouts/15/people.aspx?MembershipGroupId=0" und "..._catalogs/users/simple.aspx" und "..._catalogs/users/detail.aspx"
$user = $web | Get-SPUser -Limit ALL    

# Aus der BenuntzekKennung den DisplayNamen bauen
$ProblemDisplayName = $ProblemUserAccount+$Domain

# Benutzer mit nicht korrektem "DisplayName"
$ProblemUser = $user | ?{$_.DisplayName -eq $ProblemDisplayName}

# Problem-User anzeigen
Write-Warning "Folgender Benutzer wird gleich aus dem AD neu eingelesen"
$ProblemUser | fl ID, UserLogin, DisplayName, Name, LoginName, SystemUserKey, IsSiteAdmin, IsSiteAuditor, IsDomainGroup, Email, Sid, Roles, Groups

# "DisplayName" ändern bzw. vom AD ziehen.
# set-spuser -identity $user -displayname "PEET\MigratedGroup"
Set-SPUser –Identity $ProblemUser –SyncFromAD –Web $Web -Confirm

# Noch einmal frische Benutzerliste ziehen
$user = $web | Get-SPUser -Limit ALL

# Benutzer mit der Problemkennung anzeigen (hier sollte jetzt der korrekte DisplayName angezeigt werden)
Write-Host "`nDer Benutzer sieht nun wie folgt aus" -ForegroundColor Cyan
$NotProblemUser = $user | ?{$_.UserLogin -like "*$ProblemUserAccount*"}
$NotProblemUser | fl ID, UserLogin, DisplayName, Name, LoginName, SystemUserKey, IsSiteAdmin, IsSiteAuditor, IsDomainGroup, Email, Sid, Roles, Groups

Quellen und Links

Teile diesen Beitrag

Dokumentenversionen auflisten und löschen per PowerShell

Alle Dokumentenversionen einer Dokumentenbibliothek inklusive Dateigrößen per PowerShell anzeigen und löschen

Manchmal fällt es auf, dass die SharePoint-Seiten bzw. Dokumentenbibliotheken viel Speicherplatz belegen, obwohl die Summe der eigentlichen Dateien viel geringer ist.

Der Speicherplatzverbrauch ist evtl. durch verbrauchte Speicher-Quota oder durch das Betrachten der Speichermetriken (Websiteeinstellungen > Websitesammlungsverwaltung > Speichermetriken) aufgefallen.

Storage Metrics - Speichermetriken - _layouts-storman.aspx - SharePoint 2013

Die echten Dateigrößen kann man sich anzeigen lassen, indem man die Dokumentenbibliotheks- oder Dateieigenschaften im Windows-Explorer per WebDav-Protokoll öffnet.
(Dokumentenbibliothek im IE > Reiter „Bibliothek“ > „Mit Explorer öffnen“). SharePoint Bibliothek - Reiter BIBLIOTHEK - Menü lang - Mit Explorer öffnen Button - SharePoint 2013

Falls die in Speichermetriken angezeigten Datengrößen von den Tatsächlichen Dateigrößen abweichen, dann könnte es sein, dass die Speicherbelegung durch die Dokumentenversionen zustande kommt. Denn auch wenn nur geringe Änderungen in einem (großen) Dokument durchgeführt werden, wird (bei eingeschalteter Versionierung) jedes mal eine komplette Kopie dieser großen Datei erstellt.

Mehrere Probleme bei aktivierter Versionierung

Deaktivieren der Versionierung löscht die Versionen nicht

Nach dem Deaktivieren der Versionierung bzw. Begrenzung der Anzahl der Versionen werden bereits vorhandene Dokumentenversionen nicht gelöscht bzw. nicht bereinigt, somit wird der bereits belegte Speicher nicht freigegeben.

OneNote Versionen können nicht angezeigt/gelöscht werden

In unserem SharePoint 2013 System wird für OneNote-Notizbücher das Kontextmenü zum Anzeigen und Löschen der Versionen nicht angezeigt.

Die im SharePoint vorhandenen Versionen des OneNote-Dokumentes wurden nicht gelöscht, nachdem die Versionen im OneNote-Dokument selbst gelöscht und inklusive Papierkorb im Dokument deaktiviert wurden.

Skript für das Auflisten aller Dokumenten-Versionen und deren Datengröße innerhalb einer Dokumentenbibliothek

Dieses Skript wird alle Dokumente und deren Versionen einer Dokumentenbibliothek inklusive Speicherplatzbelegung und Dateigrössensummen als Tabelle und Liste ausgeben.

Das Skript am besten in einer PowerShell-ISE blockweise ausführen.

# Alle Versionen und Dateigroessen(Summen) aller Dokumente in der Dokumentenbibliothek anzeigen
# ----------------------------------------------------

Write-Verbose "SharePoint-Module werden geladen..."
Add-PSSnapin Microsoft.SharePoint.PowerShell

# Puffer (sonst werden z.B. Spalten rechts abgeschnitten in der Konsolen- und TXT-Ausgabe etc.)
$buffer = $host.ui.RawUI.BufferSize; $buffer.width = 3000; $buffer.height = 3000; $host.UI.RawUI.Set_BufferSize($buffer)

#$WebApp = "https://sharepoint-portal-url.de"   #Für BDC-Kontext
$WebURL = "https://sharepoint-portal-url.de/SiteCollection/Site/SubSite"   #Name der Site, in der sich die Listen und Elemente befinden
$ListName = "Dokumente"

$ErrorActionPreference = "Stop"
$WarningPreference = "Continue"
$VerbosePreference = "Continue" #"SilentlyContinue"	#Standard
$DebugPreference = "SilentlyContinue" #"Inquire" Wenn das aktiviert ist, kann man Haltepunkte mit write-debug "Hier ist ein Haltepunkt" einfügen
#Möglich: SilentlyContinue, Stop, Continue (Standard), Inquire

# Für BCS-Listen muss man vorher ServiceContext deklarieren, sonst gibt es folgende Fehler "Unerwarteter Fehler bei der Shimausführung - Fehler bei der Proxyerstellung. Der Standardkontext wurde nicht gefunden" oder "The shim execution failed unexpectedly – Proxy creation failed. Default context not found" Quelle: http://consulting.risualblogs.com/blog/2013/06/03/sharepoint-2013-and-powershellretrieving-bcs-list-items/
#$context = Get-SPServiceContext $WebApp
#$scope = new-object Microsoft.SharePoint.SPServiceContextScope $context

# Web-Objekt und List-Objekt aus den oberen Eingaben holen
$Web = Get-SPWeb $WebURL; Write-Verbose "Website: $Web"
$List = $Web.Lists[$ListName]; Write-Verbose "List: $List"

Write-Host "`nAlle Listen der Site:" -ForegroundColor Cyan
$Web.Lists | Sort DefaultViewUrl | ft DefaultViewUrl, Title, BaseType, Hidden, EnableVersioning, EnableMinorVersions, MajorVersionLimit, MajorWithMinorVersionsLimit, Created, LastItemModifiedDate, LastItemDeletedDate, ItemCount, IsThrottled, EnableThrottling, HasUniqueRoleAssignments, Author, ID, Description -AutoSize

# Die oben gewählte Liste holen (und anzeigen)
$List = $Web.Lists[$ListName]
#$List

Write-Verbose "Versionierungseinstellungen der Liste anzeigen"
$List | fl EnableVersioning, EnableMinorVersions, MajorVersionLimit, MajorWithMinorVersionsLimit

# Alle Items der Liste holen
$Items = $List.GetItems()

Write-Host "`nListenelemente:" -ForegroundColor Cyan
# Hauptversionen werden immer in 512er Schritten gezählt. Nebenversionen in 1er Schritten. Beispiele: Versions={512}, heißt es gibt nur eine Version (bzw. nur die Originaldatei). Versions={513, 512} heißt, es gibt insgesamt zwei Versionen, eine erste Hauptversion (1.0) und eine erste Nebenversion (1.1). Versions={1025, 1024} heißt, es gibt insgesamt zwei Versionen, nur eine (zweite) Hauptversion (2.0 = 1024/512) und eine Nebenversion (2.1)
$Items | Sort URL | ft -AutoSize URL, ID, Versions, @{label="Ver. Count";Expression={$_.Versions.Count}}, File, Properties, Name, DisplayName, UniqueId
#$Items | fl
#$Items.Versions

# Dateiinformationen (Dokumente) der Listenelemente anzeigen
$Files = $Items.File

# Dokumente nach URL
Write-Host "`nDokumente (nach URL):" -ForegroundColor Cyan
$Files | Sort URL | ft -AutoSize URL,  @{label="File Size [MB]";Expression={[math]::round($_.Length/1MB, 2)}}, @{label="Ver. Count";Expression={$_.Versions.Count}}, @{label="Vers. Sum [MB]";Expression={[math]::round(($_.Versions.Size | Measure-Object -Sum).Sum/1MB, 2)}},   <#@{label="Total Size in MB";Expression={[math]::round($_.TotalLength/1MB, 2)}},#> UIVersion, UIVersionLabel, Versions, Author, ModifiedBy, TimeCreated, TimeLastModified, CheckOutStatus, Name, UniqueId

# Summe der Dateien (ohne Versionen) anzeigen
$Files | ForEach-Object {$sum=0}{$sum+=$_.TotalLength}
Write-Host "Dateigroessensumme (ohne Versionen, sprich WebDav-Groesse): $([math]::round($sum/1MB, 2)) MB" -ForegroundColor Cyan    # Gerundet

# Summe der Versionen anzeigen
# Alle Versionen jeder Datei summieren und Gesamtsumme bilden
$VerSum = ($Files | %{($_.Versions.Size | Measure-Object -Sum).Sum} | Measure-Object -Sum).Sum
Write-Host "Versionsgroessensumme: $([math]::round($VerSum/1MB, 2)) MB`n" -ForegroundColor Cyan    # Gerundet

Write-Host "`n`nListe der Dateien, der Versionen und gesamte Summe (inkl. Versionen):" -ForegroundColor Cyan
$sum=0
ForEach ($File in $Files) {

    # Datei ausgeben
    Write-Host "`n$($File.URL) `t`tFile Size: $([math]::round($File.TotalLength/1MB, 2)) MB" -ForegroundColor Green

    # Wenn keine Versionen vorhanden, dann addiere Dateigroesse, da der Versionsblock unten nicht verarbeitet wird
    if ($($File.Versions) -eq $null){$Sum+=$File.TotalLength ; Write-Debug "Wenn->DANN"} #else {$Sum+=$File.Versions.Size ; Write-Debug "Wenn->SONST"}
    Write-Debug "File.Versions = $($File.Versions)"
    Write-Debug "Sum: $Sum"

    $VerSum=0
    ForEach ($Version in $File.Versions) {
        # Versionsgroessen summieren
        $VerSum+=$Version.Size
        #Write-Verbose "VerSum: $VerSum"

        # Addiere Versionsgroessen, da Dateigroesse nur addiert wird, falls keine Version vorhanden
        $Sum+=$Version.Size

        # Version zur Datei ausgeben
        Write-Host "`tVersionLabel: $($Version.VersionLabel) `t`tVersion-ID: $($Version.ID) `t`tVersion Size: $([math]::round($Version.Size/1MB, 2)) MB" -ForegroundColor Blue
        
    }
    # Versionsumme Ausgabe
    Write-Host "`t-------------------------------" -ForegroundColor Blue
    Write-Host "`tVersion Size Sum: $([math]::round($VerSum/1MB, 2))" -ForegroundColor Blue
}

Write-Host "`nSumme (inkl. Versionen): $([math]::round($Sum/1MB, 2)) MB`n" -ForegroundColor Cyan    # Gerundet

Das Skript zeigt alle Elemente der Dokumentenbibliothek (Listenelemente) und Anzahl der Versionen pro Listeneintrag.

Hinweis: OneNote-Notizbücher werden wie Ordner und OneNote-Abschnitte bzw. Reiter als einzelne Dateien mit eigenen Versionen behandelt.

Dokumentenbibliothek - Listenelemente - Versionen Anzahl - PowerShell

 

Dann werden die eigentlichen Dokumente (inklusive unter anderem Dateigröße, Anzahl der Versionen, Speicherplatzsumme der Versionen pro Dokument usw.) ausgegeben.

Am Ende der Tabelle wird die Dateigröße aller Dokumente der Dokumentenbibliothek (Dateigrössensumme) und der Speicherplatzverbrauch aller Versionen in der Dokumentenbibliothek ausgegeben.

 Dokumentenbibliothek - Tabelle - Dokumentenversionen - Dateigroesse, Anzahl Versionen, Dateisumme der Versionen - PowerShell

 

Am Ende des Skriptes werden die Dateien mit dazugehörigen Versionen als eine Liste ausgegeben und die Gesamtsumme der Dokumentenbibliothek (alle Dateien plus alle Versionen) ausgegeben.

Dokumentenbibliothek - Liste - Dokumentenversionen - Dateigroesse, Versionen - PowerShell

Dokumentenbibliothek - Liste - Dokumentenversionen - Dateigroesse, Versionen, Summe Dateien und Versionen - PowerShell

Erstellung der Versionen per PowerShell deaktivieren

Die Versionierung kann man entweder direkt im SharePoint deaktivieren: Dokumentenbibliothek > Reiter „Bibliothek“ > Bibliothekeinstellungen > „Versionsverwaltungseinstellungen

oder mit Hilfe des nachfolgenden Skriptes.

# Versionierungseinstellungen für eine Liste anzeigen/ändern - List Versioning Settings
# -------------------------------------------------
# Durch Begrenzen oder Ausschalten werden die alten Versionen NICHT bereinigt!

$WebURL = "https://sharepoint-portal-url.de/SiteCollection/Site/SubSite"   #Name der Site, in der sich die Listen und Elemente befinden
$ListName = "Dokumente"

# Web-Objekt und List-Objekt aus den oberen Eingaben holen
$Web = Get-SPWeb $WebURL; Write-Verbose "Website: $Web"
$List = $Web.Lists[$ListName]; Write-Verbose "List: $List`n"

Write-Verbose "Versionierungseinstellungen der Liste vor der Änderung:"
$List | fl EnableVersioning, EnableMinorVersions, MajorVersionLimit, MajorWithMinorVersionsLimit

Write-Verbose "Versionierungseinstellungen der Liste setzen"; Write-Host ""
$List.EnableVersioning = $false            # Hauptversionierung deaktivieren mit $false bzw. mit $true aktivieren
#$List.EnableMinorVersions = $false        # Nebenversionierung deaktivieren mit $false bzw. mit $true aktivieren (optional zu der aktivierten Hauptversionierung)
# Änderung der Limits nur dann möglich, wenn Enable aktiviert ist. Einstellung "0" setzt die Anzahl auf unbegrenzt.
#$List.MajorVersionLimit=0             # Max. Anzahl an Hauptversionen behalten
#$List.MajorWithMinorVersionsLimit=0    # Max. Anzahl an Nebenversionen behalten

$List.Update()

Write-Verbose "Versionierungseinstellungen der Liste nach der Änderung:"
$List | fl EnableVersioning, EnableMinorVersions, MajorVersionLimit, MajorWithMinorVersionsLimit

 

Versionsverwaltungseinstellungen - EnableVersioning - Disable Versioning - PowerShell Skript

Dokumentenbibliothek - Reiter Bibliothek - Bibliothekeinstellungen - Versionsverwaltungseinstellungen - Keine Versionskontrolle - SharePoint 2013

Alle Versionen in einer Dokumentenbibliothek löschen per PowerShell-Skript

Dieses Skript löscht alle Versionen aller Dokumente in einer Dokumentenbibliothek. Dabei ist es für das Skript irrelevant, ob die Versionierung in den „Versionsverwaltungseinstellungen“ aktiviert oder deaktiviert ist.

Wie immer gilt: Vorher immer ein Backup anfertigen!

Das Skript auch am besten in einer PowerShell-ISE blockweise ausführen.

# ALLE Versionen der Dokumente in einer Dokumentenbibliothek löschen
# ---------------------------------------------------------------
# Es bleiben nur noch die Dokumente selbst

Add-PSSnapin Microsoft.SharePoint.Powershell -ErrorAction SilentlyContinue

#Configuration Parameters
$WebURL = "https://sharepoint-portal-url.de/SiteCollection/Site/SubSite"
$ListName = "Dokumente"
 
#Get the Web, List objects
$Web= Get-SPWeb $WebURL
$List= $web.Lists[$ListName]

Write-Verbose "`nVersionierungseinstellungen der Liste anzeigen"
$List | fl EnableVersioning, EnableMinorVersions, MajorVersionLimit, MajorWithMinorVersionsLimit
 
#Get all Items from the List
$ListItems = $List.Items
Write-host "Total Items Found in the List:"$List.ItemCount
$Counter =0
 
#Iterate through each item
foreach ($ListItem  in $ListItems)
{
    #Display Progress bar
    $Counter=$Counter+1    
     Write-Progress -Activity "Cleaning up versions" -Status "Processing Item:$($ListItem['Name']) $($counter) of $($List.ItemCount)" -PercentComplete $($Counter/$List.ItemCount*100)
      
    #If the File has versions, clean it up
    if ($ListItem.Versions.Count -gt 1)
    { 
        Write-host "Cleaning versions for: " $ListItem["Name"]
        $ListItem.file.Versions.DeleteAll()
    }
}

 

Alle versionen in einer Dokumentenbibliothek löschen - PowerShell

Nun sind alle Versionen entfernt und nur noch die Dokumente selbst sind vorhanden.

 Dokumentenbibliothek - Listenelemente - Versionen Anzahl 1 - PowerShell

Dokumentenbibliothek - Tabelle - Dokumentenversionen - Dateigroesse, Anzahl Versionen, Dateisumme der Versionen 0 - PowerShell

Dokumentenbibliothek - Liste - Dokumentenversionen - Dateigroesse, Versionen - Nur Summe der Dateien geblieben - PowerShell

Links und Quellen

Teile diesen Beitrag

SharePoint Unterseiten Liste – PowerShell Skript

SharePoint Unterseiten Liste (inklusive „SiteAdministrators“, „Created“ Date, „LastItemModifiedDate“, „Author“, „URL“, „ID“) per PowerShell Skript generieren

Das PowerShell-Skript in diesem Artikel erstellt eine SharePoint Unterseiten Liste. Diese Liste der Unterseiten (SubSites) enthält natürlich auch die dazugehörigen Websitesammlungen (Sitecollections) und die wichtigsten Informationen wie „ServerRelativeUrl“, „Title“, „SiteAdministrators“, „Created“ Date, „LastItemModifiedDate“, „Author“, „URL“, „ID“ und „ParentWebId“.

Beispielausgabe:

ServerRelativeUrl           Title          	SiteAdministrators         Created            	LastItemModifiedDate	Author                     Url                                                         ID                                  				ParentWebId
-----------------           -----          	------------------         -------            	--------------------	------                     ---                                                         --                                  				-----------
/                           Homepage		i:0#.w|domain\SiteAdmin1   20.02.2013 11:29:28	07.10.2017 01:00:04 	i:0#.w|domain\author1      https://sharepoint.domain.de                                c9176007-424f-4d03-a4f9-695b8df0a0f5				00000000-0000-0000-0000-000000000000
/Sitecollection1           	Projekte1  		i:0#.w|domain\SiteAdmin2   01.08.2013 09:03:34	14.06.2017 21:56:11 	i:0#.w|domain\author2      https://sharepoint.domain.de/Sitecollection1                a109b1e2-72be-4e55-bff6-e5612790d9d8				b9e00a9a-7822-488d-8289-049fe91f919b
/Sitecollection1/SubSite1   Projekt1   		i:0#.w|domain\SiteAdmin2   28.03.2014 09:18:13	17.06.2017 09:56:22 	i:0#.w|domain\author3      https://sharepoint.domain.de/Sitecollection1/SubSite1       6d392a7f-3c7d-43b1-9ad5-b9a0411a5c04				36f95aa9-31fc-4170-b87f-d78210832fab
/Sitecollection1/SubSite2   Projekt2   		i:0#.w|domain\SiteAdmin2   03.02.2016 12:09:28	14.06.2017 09:58:12 	i:0#.w|domain\author4      https://sharepoint.domain.de/Sitecollection1/SubSite2       6de69a56-3460-49e9-83f1-36a9fa3b1fe9				36f95aa9-31fc-4170-b87f-d78210832fab
/Sitecollection2           	Projekte2  		i:0#.w|domain\SiteAdmin3   28.03.2014 09:18:13	17.06.2017 09:56:22 	i:0#.w|domain\author5      https://sharepoint.domain.de/Sitecollection2                5055d2d7-50f4-43c8-aea8-165942e6631c				b9e00a9a-7822-488d-8289-049fe91f919b
/Sitecollection2/SubSite1   Projekt1   		i:0#.w|domain\SiteAdmin4   03.02.2016 12:09:28	14.06.2017 09:58:12 	i:0#.w|domain\author6      https://sharepoint.domain.de/Sitecollection2/SubSite1       5db93ed7-4b54-4517-879c-dd976daff3b8				ff0cd1e8-f640-4569-8ccd-feabe124c9ae

 

Diese SharePoint Unterseiten Liste wird in der PowerShell-Konsole ausgegeben. Außerdem wird die Tabelle in eine Text-Datei (TXT) und eine CSV-Datei geschrieben und bei Bedarf per Mail verschickt. Die Erstellung bzw. den Versand kann man per Windows-Task z.B. einmal pro Woche automatisieren.

Das Skript könnte, zusammen mit den anderen Skripten aus unserer Artikelreihe „Inventarisierung„, dem SharePoint-Admin dabei helfen, seine SharePoint-Umgebung zu erfassen und den Überblick über Sitecollections, Datenbanken und andere Sharepointfarmkomponenten zu behalten und Reporting-Anfragen schnell beantworten zu können.

SharePoint Unterseiten Liste – PowerShell Skript weiterlesen

Teile diesen Beitrag

SharePoint Dienste Tabelle inklusive Status – PowerShell Skript

SharePoint Dienste Tabelle inklusive Dienst-Status per PowerShell Skript generieren

Das PowerShell-Skript in diesem Artikel erstellt eine SharePoint Dienste Tabelle. In dieser Tabelle werden alle SharePoint-Dienste, die in der Farm vorhanden sind, mit dem Status auf den SharePoint-Servern der SharePoint-Farm ausgegeben.

Beispielausgabe:

Service Server01 Server02 Server03 Server04
Server Suche Online Online Disabled Disabled
Verteilter Cache Online Online
Zentraladministration Online Online Disabled Disabled
. . . . . . . . . . . . . . .

Diese Tabelle der SharePoint Dienste inklusive Dienst-Status wird in der PowerShell-Konsole ausgegeben. Zusätzlich wird die Tabelle in eine Text-Datei (TXT) und eine CSV-Datei geschrieben und per Mail verschickt. Die Erstellung bzw. den Versand kann man per Windows-Task z.B. einmal pro Woche automatisieren.

Das Skript könnte, zusammen mit den anderen Skripten aus unserer Artikelreihe „Inventarisierung„, dem SharePoint-Admin dabei helfen, seine SharePoint-Umgebung zu erfassen und den Überblick über Sitecollections, Datenbanken und andere Sharepointfarmkomponenten zu behalten.

SharePoint Dienste Tabelle inklusive Status – PowerShell Skript weiterlesen

Teile diesen Beitrag

SharePoint DB Liste nach Größe sortiert – PowerShell Skript

SharePoint DB Liste (nach Größe) sortiert per PowerShell Skript generieren

Das folgende PowerShell-Skript generiert eine SharePoint DB Liste, die nach Größe sortiert ist. Am Ende wird auch die Summe dieser Datenbanken berechnet.

Diese Liste wird in der PowerShell-Konsole ausgegeben. Zusätzlich wird die Liste in eine Text-Datei (TXT) und eine CSV-Datei geschrieben und per Mail verschickt. Die Erstellung bzw. den Versand der SharePoint DBs Liste kann man per Windows-Task z.B. einmal pro Woche automatisieren.

Das Skript könnte, zusammen mit den anderen Skripten aus unserer Artikelreihe „Inventarisierung„, dem SharePoint-Admin dabei helfen, seine SharePoint-Umgebung zu erfassen und Überblick über Sitecollections, Datenbanken und andere Sharepointfarmkomponenten zu behalten.

SharePoint DB Liste nach Größe sortiert – PowerShell Skript weiterlesen

Teile diesen Beitrag

SharePoint AAM – Alternate Access Mapping – Liste – PowerShell Skript

SharePoint AAM (Alternate Access Mapping) Liste per PowerShell generieren

Das folgende PowerShell-Skript generiert eine Liste von SharePoint AAM (Alternate Access Mapping).

Diese Liste wird in der PowerShell-Konsole ausgegeben. Zusätzlich wird die Liste in eine Text-Datei (TXT) und eine CSV-Datei geschrieben und per Mail verschickt. Die Erstellung bzw. den Versand der SharePoint AAM Liste kann man per Windows-Task z.B. einmal pro Woche automatisieren.

Das Skript könnte, zusammen mit den anderen Skripten aus unserer Artikelreihe „Inventarisierung„, dem SharePoint-Admin dabei helfen, seine SharePoint-Umgebung zu erfassen und Überblick über Sitecollections, Datenbanken und andere Sharepointfarmkomponenten zu behalten.

SharePoint AAM – Alternate Access Mapping – Liste – PowerShell Skript weiterlesen

Teile diesen Beitrag

Nintex Workflows auflisten (Statusabhängig) – Tipp

Nintex Workflows auflisten (je nach Workflow-Status)

In diesem kurzen Tipp-Artikel zeige ich, wie man Nintex-Workflows nach Status (Running, Completed, Cancelled, Error) gefiltert, auflisten kann.

Das könnte z.B. dann hilfreich sein, wenn ein Workflow eine Mail verschickt, und man herausfinden will, welcher Workflow denn das nun genau tut.

Nintex Workflows auflisten (Statusabhängig) – Tipp weiterlesen

Teile diesen Beitrag

Telnet-Client per PowerShell installieren – Tipp

Telnet-Client per PowerShell auf einem Windows Server installieren

Mit Hilfe des Telnet-Client kann getestet werden, ob die Verbindung zu einem Server auf einem bestimmten Port funktioniert.

Leider ist der Telnet-Client zwar vorhanden, aber in Windows standardmäßig nicht aktiviert (als Feature nicht installiert).

In diesem kurzen Tipp möchte ich zeigen, wie man Telnet-Client per PowerShell installieren kann.

Telnet-Client per PowerShell installieren – Tipp weiterlesen

Teile diesen Beitrag

Verteilter Cachedienst – Konto ändern

Verwaltetes Konto für den Dienst „Verteilter Cachedienst“ ändern

Versucht man die Kontoumschaltung für den verteilten Cachedienst (Distributed Cache, AppFabricCachingService) in der ZA-GUI durchzuführen, wird folgende Fehlermeldung angezeigt:

Der verteilte Cachedienst unterstützt diese Aktion aus der Zentraladministration nicht. Verwenden Sie SharePoint PowerShell-Cmdlets.

Verteilter Cachedienst – Konto ändern weiterlesen

Teile diesen Beitrag