SharePointCommunity
Die deutschsprachige Community für SharePoint, Office 365 und mit Azure

Workflow per PowerShell starten

bewertet von 0 Usern
Nicht beantwortet Dieser Beitrag hat 0 Geprüfte Antworten | 6 Antworten | 2 Followers

Top-50-Beitragsschreiber
253 Beiträge
BBB erstellt in 18 Mai 2015 11:25

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

Top-10-Beitragsschreiber
18.810 Beiträge

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

Viele Grüße
Andi
af @ evocom de
Blog
Top-50-Beitragsschreiber
253 Beiträge

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.

Top-10-Beitragsschreiber
18.810 Beiträge

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
Top-200-Beitragsschreiber
70 Beiträge

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/

Top-25-Beitragsschreiber
354 Beiträge

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

Top-10-Beitragsschreiber
18.810 Beiträge

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
Seite 1 von 1 (7 Elemente) | RSS