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.




Workflow per PowerShell starten

Unbeantwortet Dieser Beitrag hat 6 Antworten

Ohne Rang
253 Beiträge
BBB erstellt 18 Mai 2015 11:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich möchte gerne einen Workflow per PowerShell-Script starten. Habe auch schon ein passendes Script gefunden, leider bekomme ich immer diese Fehlermeldung: Ausnahme beim Aufrufen von "StartWorkflow" mit 3 Argument(en):  "Das Startereignis kann nicht synchron über einen manuell gestarteten Workflow geliefert werden."

Hat jemand schon mal das gleiche probiert? Oder weiß wie dieses Problem gelöst werden kann?

Für irgendwelche Tipps wäre ich Euch dankbar.

Viele Grüße

BBB

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 Mai 2015 12:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wie sieht das Script denn aus und welche Zeile verursacht den Fehler?

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
253 Beiträge
BBB Als Antwort am 18 Mai 2015 13:08
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

So sieht mein Script aus:

if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null)
{
  Add-PSSnapin Microsoft.SharePoint.PowerShell
}
#Site and List 
Start-SPAssignment -global;
$web = Get-SPWeb "" -AssignmentCollection $spAssignment
$site = Get-SPSite ""
$listName = $web.Lists[""]
$web.AllowUnsafeUpdates = $true;
 
#Output file
$Today = Get-Date -Format "dd-M-yy"
$outFile = "c:\WorkflowScript-Log-$Today.txt"
 
#Workflows to Remove
$wfToStart= "Workflow"
 
#List Name 
$list = $web.Lists[""];
 
#Workflow Manager
$manager=$web.Site.WorkFlowManager
$association=$list.WorkFlowAssociations  | where {$_.Name -eq $wfToStart}

 
# Iterate through all Items in List and all Workflows on Items. 
 #Filtered List
    $data=$association.AssociationData
    $items=$list.Items
 Write-Host "Restarting workflows.."
 foreach ($item in $items) {
  
   if ($item["Status"] -ne "Abgeschlossen") {
   $wf=$manager.StartWorkFlow($item,$association,$data)
   Write-Output "$wftoStart started on " $item.Name | Out-File $outFile -Append
  }
  else {
   Write-Output $item.Name " - is completed " | Out-File $outFile -Append
 
  }
     
 }
Write-Host Finished.
$web.Dispose()
$site.Dispose()

An der gelb markierten Stelle tritt der Fehler auf.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 Mai 2015 13:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Steht denn in $association überhaupt etwas? Und dann würde ich das Ganze erstmal mit einem einzigen ListItem ausprobieren. Ich gehe mal davon aus, daß Du beim Durchgehen aller Elemente auch welche erwischt hast, bei denen der Workflow bereits läuft. Eine Abfrage auf irgendein Statusfeld erscheint mir da nicht ausreichend...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
70 Beiträge
Jan Er Als Antwort am 1 Juni 2015 12:04
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hey!

Bei deinem eigentlichen Problem kann ich leider nicht helfen aber ich vermute (zumindest war es bei mir so und dem Powershell-Gedankengang) das du automatisiert zu bestimmten Zeiten/Wochentagen Workflows starten möchtest?

Schau dir mal den HarePoint Workflow Scheduler an, der kann das alles :-)

https://www.harepoint.com/products/harepointworkflowscheduler/

Ohne Rang
354 Beiträge
ExpoIT Als Antwort am 29 Juni 2017 18:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi Andi, versuche mich auch gerade damit,,,,

bei mir steht nichts in $association.

HAb ich da die Verbindung mit dem WorkflowManager nicht hinbekommen oder woran kann es liegen, finde den Fehler einfach nicht.

 

 

Viele Grüße AS

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 30 Juni 2017 08:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Dann hast Du einfach den zu startenden Workflow nicht ausfindig gemacht. Er wird im Code über seinen Namen gesucht.

Es ist zwar serverseitiger Code, aber ich bin nicht sicher, ob der auch für 2013er Workflows funktioniert. Kann gut sein, daß es nur mit 2010er geht. Bei clientseitigem Code muß man das auf jeden Fall unterscheiden.

Viele Grüße
Andi
af @ evocom de
Blog