dieses Szenario vor:-Workflow wirft Fehler ‚GetVersionInfo‘, wenn die Datei nicht mehr vorhanden ist
$Error.Clear()
Workflow Test-Workflow {
Param (
[Parameter(Mandatory)]
[Array]$File
)
'Workflow executed'
}
$File = New-Item $env:TEMP\test.txt -ItemType File -Force
$Object = [PSCustomObject]@{
File = $File
Test = 'Stuff'
}
Test-Workflow -File $Object
$Error
Alle ausgeführt Ordnung und es sind keine Fehler. Nun, wenn die Datei, um den Workflow entfernt wird nicht ausgeführt mehr ohne Fehler:
$Error.Clear()
Remove-Item $File
Test-Workflow -File $Object
$Error
Der folgende Fehler wird zweimal gemeldet:
Exception calling "GetVersionInfo" with "1" argument(s): "C:\Users\bob\AppData\Local\Temp\3\test.txt"
At line:1 char:1
+ [System.Diagnostics.FileVersionInfo]::GetVersionInfo($this.FullName)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : FileNotFoundExceptio
Ist das ein normales Verhalten? Wie kann dies vermieden werden? Weil wir die Datei archivieren möchten, bevor wir den Workflow ausführen. Oder fehlt mir hier etwas Super-Offensichtliches bezüglich Workflow-Details?
Vielen Dank für Ihre Hilfe.
Wenn ich das gleiche mit einer "Advanced-Funktion" in PowerShell mache, gibt es keinen Fehler, aber mit einem 'Workflow' gibt es. Wirklich seltsam, dass der 'Workflow' die Existenz der Datei überprüfen will, während diese überhaupt nicht benötigt wird. Danke für die Hilfe trotzdem. – DarkLite1
Ich habe es ziemlich einfach gemacht, indem ich die Eigenschaften ausgewählt habe, die ich im Voraus benötige, wie diese Datei = $ F | Select-Object Name, BaseName, FullName' – DarkLite1
Ich finde Powershell ein wenig obskurer, wenn es um Aktionen hinter den Kulissen geht. Der folgende Link beschreibt die Einschränkungen von Variablen in Workflows unter anderem. Ich denke, dass das Verlieren des Dateiobjekts im Speicher und die Tatsache, dass die tatsächliche Datei noch vorhanden sein muss, etwas damit zu tun hat, dass Workflows nicht Powershell sind, sondern Code, der von Powershell in etwas anderes übersetzt wird. https://technet.microsoft.com/en-us/magazine/dn151046.aspx –