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.




Listenworkflow über Powershell hinzufügen

Unbeantwortet Dieser Beitrag hat 8 Antworten

Ohne Rang
282 Beiträge
MStel erstellt 14 Apr. 2015 16:10
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich habe einen Listenworkflow erstellt um Listenelementberechtigungen zu entfernen und nach ein paar Abfragen eingeschränkt eigene zu setzen, das ganze geschieht innerhalb einer Liste und funktioniert ganz gut.
Nun bin ich aber  meinen Server via PowerShell Skript am Installieren.

Über "Wiederverwendbaren Workflow erstellen" kann ich meine Lösung nicht realisieren, da dies nur eingeschränkte Optionen zur Verfügung stellt. - Sprich: Es ist kein Import eines bestehenden Workflows möglich, daher muss ich einen Listenworkflow über Powershellskript erstellen.

Da ich so etwas noch nie gemacht habe und die MSDN Klassen keine sinnvollen Beispiele anzeigen bin ich mit dieser Aufgabe total überfragt.
Muss die Workflow Funktionalität dann auch über Script mitgeliefert werden als Parameter?

MFG
MStel

Alle Antworten

Ohne Rang
31 Beiträge
DaBus Als Antwort am 14 Apr. 2015 20:16
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi MStel,

irgendwie ein bisschen konfus dein Vorhaben. Du schreibst etwas von Listenelementberechtigungen (ItemLevelSecurity), möchtest das aber bei der Installation über Script ausführen? Da gibt es doch noch keine Dokumente oder Listenelemente.

Oder meinst du einzelne Listenberechtigungen? 

Auf Elementebene wäre ein Workflow oder Eventreceiver sicher die richtige Wahl, wenn du Listenberechtigungen bei der Erstellung setzen möchtest dann über dein Script. Vielleicht kannst du nochmal ausführlicher schildern was du am Ende erreichen möchtest. Die IFs kannst du dafür weglassen ;)

Einen Workflow mit Powershell stelle ich mir schwer vor. Du könntest eine Workflowinstance per Powershell auf eine Liste oder Bibliothek erstellen. Das ist aber was anderes. Dafür muss der Workflow bereits vorhanden sein.

Grüße,

Daniel

Ohne Rang
31 Beiträge
DaBus Als Antwort am 14 Apr. 2015 20:19
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Nachtrag... 

Wenn du die Dateien oder Listenelemente natürlich schon beim installieren mit rein packst, dann könntest du da auch gleich die Elementberechtigungen per Script setzen.

Ohne Rang
282 Beiträge
MStel Als Antwort am 15 Apr. 2015 07:04
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

In mehrere Listen trage ich schon vorab Elemente ein, welche verändert werden müssen und in eine andere Liste trage ich noch keine Elemente ein, aber für alle die zukünftig erstellt werden sollen, müsste dieser Workflow funktionieren, also auf Listenelementebene.
Da ich aber bei wiederverwendbaren Workflows die Eigenschaften Aktuelles Element:Liste, was zwingend benötigt ist für meine Funktionalität nicht verwenden kann, da die Vorlage ja nicht weiß ob die Liste auf anderen Systemen vorhanden ist bräuchte ich auf diese "Variable" eine Abfrage um den Workflow wiederzuspiegeln.
Jetzt weiß ich nicht ob es so etwas wie "Aktuelles Element:Liste1" und "IF CONTAINS" via PowerShell zu lösen ist oder wie ich mich um die ganze Sache drum herum baue..

Könntest du ein Beispiel bringen wie man Listen/Listenelemente beim erstellen berechtigt?
Aktuell sehen meine Listen so aus :

$SPWeb.ListTemplates | Select Name, Description
$SPTemplate = $SPWeb.ListTemplates["Benutzerdefinierte Liste"]
$SPWeb.Lists.Add("Student","Liste der Studenten",$SPTemplate)
$SPWeb.Lists | Get-Member

Das Füllen der Listen sieht so aus:

 $listName = "Student"
$web = Get-SPWeb $webURL
$list = $web.Lists[$listName]
$newItem = $list.Items.Add()
$newItem["Name"] = "Max Mustermann"
$newItem.Update()

MFG

Ohne Rang
31 Beiträge
DaBus Als Antwort am 15 Apr. 2015 20:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ok ein wenig mehr habe ich jetzt von deiner Anforderung verstanden. Also wenn die Liste die du suchst nicht vorhanden ist, dann ist doch auch dein Workflow nutzlos oder?

Dann würde ich ihn einfach nicht auf dieser Liste oder Bibliothek packen. Da du ja sowieso gerade ein Installationsscript erstellst, weißt du doch sicher ob sie gerade aktuell für das Web existiert oder nicht. Das würde ich dann direkt mit Powershell regeln. Mit Powershell geht alles was über Code auch geht. Das ist sicherlich mehr als du mit der Logik/Activities in einem SPD Workflow abbilden kannst.

Ich muss zugeben, das SPD Workflows jetzt nicht meine Stärke sind, hab bisher nur wenige Workflows damit erstellt, und Reusable Workflows noch weniger. Wenn dann habe ich eher WFs programmiert. Vielleicht kann ja da jemand anderes noch einen Tipp geben wie man das prüft. Kann mir gut vorstellen das man da auch an Listen kommt. 

Zum Thema setzen von Berechtigungen auf Item Level gibt's es viele Beispiele. Hier eins: http://sprider.org/2014/04/18/set-permission-to-list-items-using-powershell/

 

hoffe das das hilft dir erstmal weiter.

Ohne Rang
282 Beiträge
MStel Als Antwort am 16 Apr. 2015 06:58
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ja, tut mir leid dass das Problem etwas "tiefgehender" ist und schwer zu beschreiben.
Die Liste ist auf beiden Systemen vorhanden, aber das weiß mein SharePoint Designer nicht.
Wenn ich im bestehendem System auf Listenworkflow erstellen gehe, gibt er mir die Spalten der Liste als Variable. Darauf kann ich abfragen machen zum Beispiel - Enthält aktuelles Element in Liste Student den Name "Test" ?
Wenn ich allerdings auf wieder verwendbare Workflows gehe, habe ich diese Variablen nicht. Allgemein kann ich die Funktion nicht abbilden, ich benötige dazu dieses aktuelle Element aus der Liste, welche auch mit Skript auf dem neuen System identisch wieder vorhanden sein wird und auch schon ist.


habe hier eine Möglichkeit gefunden meinen Listenworkflow auf eine andere Website mit zu übernehmen, mein Problem ist wie fast immer nur wieder:
Wie steuere ich diese Sachen via Skript an.
http://blogs.technet.com/b/wkng/archive/2012/08/21/exporting-and-importing-sharepoint-designer-2010-list-workflow.aspx

Als ich mich in C# eingearbeitet habe konnte ich die MSDN.Microsoft.com immer als Hilfequelle benutzen, aber bei SharePoint finde ich sind die Informationen nicht wirklich hilfreich was Codebeispiele angeht.

Also aktuell müsste ich nur noch sagen "Add WorkflowToList ( .vwi Datei, Zielpfad, Zielliste, überschreiben ) "
Das Starten des Workflows habe ich gefunden, aber keine ordentliche Funktion zum Hinzufügen, erst recht nicht über die Vorlagendateien ( Die entstehen wenn man auf In "Visio Exportieren" geht mit der Endung .vwi )

Für die Berechtigung auf Item Level bedanke ich mich schonmal, damit habe ich einen zweiten Workflow schonmal vermeiden können!

MFG
Mstel

Ohne Rang
31 Beiträge
DaBus Als Antwort am 16 Apr. 2015 07:37
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Einfach wäre ja auch langweilig.

also deine Seite sieht mehr nach einem kleinen Hack aus als das ich sie empfehlen könnte. Programmatisch sicher auch machbar. Müsstest dann halt auch einen leeren erzeugen per Script, dann die Zips entpacken und die benannte Datei austauschen. 

Was ist mit Visual Studio? Kannst du nicht den Workflow erstellen, dann in VS importieren, deine Änderungen vornehmen und anschließend wieder deployen?

https://msdn.microsoft.com/en-us/library/office/gg615452%28v=office.14%29.aspx

Anschließend dann per Code hinzufügen: https://msdn.microsoft.com/en-us/library/office/hh528516%28v=office.14%29.aspx

 

p.s. Habe extra 2 MSDN Seiten gesucht :)

hoffe das hilft dir weiter.

Ohne Rang
282 Beiträge
MStel Als Antwort am 16 Apr. 2015 08:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Habe unter

http://blogs.msdn.com/b/guruketepalli/archive/2012/11/06/add-remove-sharepoint-workflows-thru-powershell.aspx

ein snippet gefunden was mich einen Listenworkflow nach Vorlage erstellen lässt.

 

zum Importieren meines funktionierenden Workflows benötige ich aber einen "leeren" Workflow im Workflow Verzeichnis, und keinen Listenworkflow, bei welchem man ein Template auswählen muss.
Würde ich diesen Workflow in mein Workflow Verzeichnis erstellen können, könnte ich dort meine Änderungen vornehmen ( config Datei und rules durch meine ersetzen ) und die Sache wäre erledigt.

Bin Nah am Ziel, aber auch so "Kleinigkeiten" halten jemanden immens auf, wenn man alle Möglichkeiten durchprobieren muss.
Wenn ich einen Konstruktor finde um die Erstell-Methode ohne Template aufzurufen werde ich nocheinmal bescheid geben.

MFG
MStel

Ohne Rang
282 Beiträge
MStel Als Antwort am 16 Apr. 2015 13:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Konnte das Problem bisher nicht lösen.