2016-06-09 16 views
0

Ich habe PowerShell-Skript mit einem Workflow und foreach -parallel. Ich setze TimeoutSec in den Workflow für einen InlineScript Block.Handle Fehler in Datei im Workflow

Wenn ich Schlafbefehl auf 15 Sekunden eingestellt, bekam ich Fehler unter:

Microsoft.PowerShell.Utility\Write-Error : The activity has exceeded the 
specified maximum running time of 10 seconds. 
At create-new-vms:25 char:25 
+ 
    + CategoryInfo   : NotSpecified: (:) [Write-Error], TimeoutException 
    + FullyQualifiedErrorId : System.TimeoutException,Microsoft.PowerShell.Commands.WriteErrorCommand 
    + PSComputerName  : [localhost]

möchte ich diesen Fehler schreiben in Protokolldateien (eine Datei pro Fehler für jeden foreach Element). Wie macht man das? Was muss ich meinem Skript hinzufügen?

Mein Skript:

$newvmlist = "test1", "test2" 

workflow create-new-vms { 
    param(
    [string[]]$vms 
) 

    foreach -parallel ($vm in $vms) { 
    $run = InlineScript { 
     # Create New VM 
     echo " " 
     echo " " 
     echo "___" 
     echo "VM Name - $Using:vm " 
     echo "----" 
     echo " " 
     echo " " 
     sleep 15 
    } -PSActionRunningTimeoutSec 10 

    $run 
    } 
} 

create-new-vms -vms $newvmlist 

Antwort

2

können Sie verwenden ErrorVariable:

create-new-vms -vms $newvmlist -ErrorVariable err 
$err |% {$i=0}{ $i++; $_ | out-file "$i.log" }