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.




Powershell - Find all "personal Views" and delete it

Geprüfte Antwort Dieser Beitrag hat 12 Antworten

Ohne Rang
302 Beiträge
Ardenda erstellt 25 Juni 2014 16:37
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo liebe Community,

da ich hier immer tolle Tipps bekome, wollte ich mal hier nachfragen ob mir hier jemadn weiterhelfen kann.

Frage

Kann ich per Powershell mir personalisierte Views finden?

Sprich zeige mir innerhalb einer Liste alle personalisierten Views an? Ich möchte die daraufhin auch löschen können. Wenn ich das per Powershell mache bekomme ich nur die Views, die jeder sehen kann. personalisierte Views sind da nicht dabei.

Hintergrund

Den User wurde das Recht für personalisierte Views entfernt aber wenn man den Link hat gelangt man noch zu seiner personalisierten View (die aber gelöscht werden sollten)

 

 

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 25 Juni 2014 17:08
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das ist leider nicht wirklich einfach, weil man auch über das Objektmodell immer nur Zugriff auf die Views des aktuellen Benutzers hat.

Wenn der Code unter einem Farm Admin ausgeführt wird, kann man aber andere Benutzer "impersonieren". Das geht ungefähr so:

$web = Get-SPWeb http://sharepoint/sites/SiteWithViews
foreach ($user in $web.AllUsers) {
$userSite = New-Object [Microsoft.SharePoint.SPSite] $web.Site.ID, $user.UserToken
$userWeb = $userSite.OpenWeb($web.ID)
$list = $userWeb.Lists["Listname"]
foreach ($view in $list.Views) {
if ($view.PersonalView) {
mache etwas mit der persönlichen Ansicht
}
}
}

Ist ungetestet und muß vielleicht noch etwas angepaßt werden, sollte aber grundsätzlich funktionieren...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
302 Beiträge
Ardenda Als Antwort am 26 Juni 2014 11:02
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi Andi,

danke für deine schnelle antwort.  Wie mache ich das wenn in den SharePoint Gruppen, die AD-Gruppen enthalten sind? Ich weiß nicht wie ich darin die AD-User abfragen kann.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Juni 2014 11:32
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

SPWeb.AllUsers erledigt das für Dich. Es liefert Dir alle Benutzer, die jemals in dieser Website waren (und nur die können persönliche Ansichten eingerichtet haben).

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
302 Beiträge
Ardenda Als Antwort am 26 Juni 2014 13:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi Andi,

hatte es probiert bekomme aber irgendwie immer ein Null Value zurück beim Web.Site.ID. Weißt du woran das liegen könnte?

Add-PSSnapin

 

 

Microsoft.Sharepoint.Powershell

 

 $web = Get-SPWeb "https://SPsite/sites/Test"

 

 

 

 

 

foreach

 

 

($user in $web.AllUsers) {

$userSite = New-Object Microsoft.SharePoint.SPSite( $web.Site.ID, $user.UserToken);

$userWeb

 

 

= $userSite.OpenWeb($web.ID)

Write-Host$web.ID

$list = $userWeb.Lists["Test"]

 

 

 

 

 

 

foreach

 

 

($view in $list.Views) {

if($view.PersonalView) {

Write-Host

 

 

 

$view.Title

 

}

}

}

 

Ohne Rang
302 Beiträge
Ardenda Als Antwort am 26 Juni 2014 13:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Habe nun den Fehler:

Unable to cast COM object of type 'Microsoft.SharePoint.Library.SPRequestInternalClass' to interface type

Weiß einer mit diesem Fehler was anzufangen?

http://www.windows-tech.info/6/3a1c305950a6b74b.php

Ohne Rang
302 Beiträge
Ardenda Als Antwort am 26 Juni 2014 13:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi Andi,

hatte es probiert bekomme aber irgendwie immer ein Null Value zurück beim Web.Site.ID. Weißt du woran das liegen könnte?

Add-PSSnapin

 

 

Microsoft.Sharepoint.Powershell

 

 $web = Get-SPWeb "https://SPsite/sites/Test"

 

 

 

 

 

foreach

 

 

($user in $web.AllUsers) {

$userSite = New-Object Microsoft.SharePoint.SPSite( $web.Site.ID, $user.UserToken);

$userWeb

 

 

= $userSite.OpenWeb($web.ID)

Write-Host$web.ID

$list = $userWeb.Lists["Test"]

 

 

 

 

 

 

foreach

 

 

($view in $list.Views) {

if($view.PersonalView) {

Write-Host

 

 

 

$view.Title

 

}

}

}

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Juni 2014 13:21
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Ardenda"]bekomme aber irgendwie immer ein Null Value zurück beim Web.Site.ID[/quote]

Ich hatte ja geschrieben, daß es ungetestet ist ;-)

Ersetze mal die Zeile $web = Get-SPWeb... durch

$site = Get-SPSite http://...
$web = site.OpenWeb()

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
302 Beiträge
Ardenda Als Antwort am 26 Juni 2014 13:23
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich probier es mal danke dir :)

Ohne Rang
302 Beiträge
Ardenda Als Antwort am 26 Juni 2014 13:47
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich gebe es auf. ich bekomme es nicht hin leider :-(

Ohne Rang
302 Beiträge
Ardenda Als Antwort am 26 Juni 2014 14:09
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Andi VIELEN DANK!!!

es klappt. Es war ein Synthax Fehler. Hier der fertige code

 

 

 

$web= Get-SPWeb https://test/sites/1231

foreach

 

 

($user in $web.AllUsers) {

$userSite

 

 

= New-Object Microsoft.SharePoint.SPSite($web.Site.ID, $user.UserToken);

$userWeb

 

 

= $userSite.OpenWeb($web.ID)

 

 

 

 

Write-Host

 

 

 

 

= $userWeb.Lists["Test"]

foreach

 

 

($view in $list.Views) {

if

 

 

 

($view.PersonalView)

 

Write-Host

 

 

 

}

}

}

$view.Title

{

$userWeb

$list

 

 

 

Ohne Rang
302 Beiträge
Ardenda Als Antwort am 26 Juni 2014 14:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Frage?

Liegt es an meinem IE 8 oder warum werden meine Code-Schnippsel so zerhschossen in dem Forum geposted? Während der BEarbeitung sieht das ganz anders aus.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Juni 2014 15:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Ardenda"]warum werden meine Code-Schnippsel so zerhschossen in dem Forum geposted?[/quote]

Das ist die Kombination des Programms, asu dem Du den Code kopierst und der Forensoftware hier. Kann man in der Regel nicht wirklich was dagegen machen.

Am sinnvollsten ist es, den kopierten Code zuerst in Notepad oder einen anderen Texteditor einzufügen und dann von dort hierkopieren. Dabei gehen zwar alle Formatierungen verloren, aber es ist trotzdem besser lesbar.

Viele Grüße
Andi
af @ evocom de
Blog