Hogyan hibaüzenet jelenik keletkezett PowerShell eseménykezelőkkel?

szavazat
2

Normális PowerShell hibák jelennek meg a konzol piros betűkkel. Meg lehet próbálni ezt a Write-Error 'This is an example non-terminating error message.':

piros-szöveges

Hibák belül scriptblock által, egy esetben azonban nem mutatnak ugyanazok a hibák a konzolon. Ez a szkript azt mutatja ezt a jelenséget:

$id='MyTimerEvent'
$timer = New-Object System.Timers.Timer
$n=0

$callback= { 
    $Script:n++
    Write-Host TIMER: Count $n
    if($n -eq 2){
        Write-Host The next line should be a non-terminating error message.
        Write-Error This is the error message.
    }
    if($n -gt 3){
        Unregister-Event -SourceIdentifier $id
    }
}

Register-ObjectEvent -InputObject $timer -SourceIdentifier $id `
                     -EventName Elapsed -Action $callback

$timer.Interval=500
$timer.AutoReset=$true
$timer.Enabled=$true

A szkript kimenete a következő:

TIMER: Count 1 
TIMER: Count 2 
This line should be followed by a a non-terminating error message. 
TIMER: Count 3 
TIMER: Count 4

Vegye figyelembe, hogy kimenete a vonal Write-Error This is the error message.nem jelenik meg a konzolon. PowerShell alátámasztani látszik a koncepció irányítsd át , de úgy tűnik, több hajtóműves felé átirányítani a szöveges fájlokat.

Hogyan irányítják hibák termelt PowerShell eseménykezelőkkel a PowerShell konzol?

A kérdést 11/12/2014 00:39
felhasználó
Más nyelveken...                            


1 válasz

szavazat
2

Ha tekerje a teljes tartalmát a blokk egy átirányítás írjunk-címe, hogy működik.

$callback = {(&{
  // ...
}) 2>&1 | Write-Host}

Ez használ a hagyományos ( „siker”) áramot belsőleg nyomon követheti minden ilyesmi, akkor dugja az egészet, hogy a tényleges konzol helyett dobott el, mint azt várni események rendesen.

Válaszolt 11/12/2014 01:05
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more