PowerShell / PowerShell/PowerShell

Write-Debug ignores Debug switch in Foreach-Object Parallel block

Offen
#24,016 18 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Needs-Triage
Vorherrschende Sprache
C#
Sterne
55.5k
Forks
8.5k
Ø Merge
1 T. 2 Std.
Gemergte PRs (30 T.)
88

Beschreibung

Prerequisites
Steps to reproduce

Run this script with two identical blocks of code except for the "Parallel" option.

Write-Host 'Test 1 - non-parallel'
$DebugPreference = 'SilentlyContinue'
1..2 |
ForEach-Object {
    Write-Debug "Item $_`: Write-Debug" 
    Write-Debug "Item $_`: Write-Debug -Debug" -Debug 
    Write-Debug "Item $_`: Write-Debug -Debug:`$true" -Debug:$true 
    Write-Debug "Item $_`: Write-Debug -Debug:`$false" -Debug:$false 
} 

Write-Host 'Test 2 - parallel'
$DebugPreference = 'SilentlyContinue'
1..2 |
ForEach-Object -Parallel {
    Write-Debug "Item $_`: Write-Debug"
    Write-Debug "Item $_`: Write-Debug -Debug" -Debug
    Write-Debug "Item $_`: Write-Debug -Debug:`$true" -Debug:$true
    Write-Debug "Item $_`: Write-Debug -Debug:`$false" -Debug:$false
}

Write-Host 'Done'
Expected behavior
Test 1 - non-parallel
DEBUG: Item 1: Write-Debug -Debug
DEBUG: Item 1: Write-Debug -Debug:$true
DEBUG: Item 2: Write-Debug -Debug
DEBUG: Item 2: Write-Debug -Debug:$true
Test 2 - parallel
DEBUG: Item 1: Write-Debug -Debug
DEBUG: Item 1: Write-Debug -Debug:$true
DEBUG: Item 2: Write-Debug -Debug
DEBUG: Item 2: Write-Debug -Debug:$true
Done
Actual behavior
Test 1 - non-parallel
DEBUG: Item 1: Write-Debug -Debug
DEBUG: Item 1: Write-Debug -Debug:$true
DEBUG: Item 2: Write-Debug -Debug
DEBUG: Item 2: Write-Debug -Debug:$true
Test 2 - parallel
Done
Error details
NA
Environment data
Name                           Value
----                           -----
PSVersion                      7.4.3
PSEdition                      Core
GitCommitId                    7.4.3
OS                             Microsoft Windows 10.0.19045
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0
Visuals

No response

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie, indem Sie das bereitgestellte Reproduktionsskript ausführen und das Verhalten von Write-Debug in gewöhnlichen und ForEach-Object -Parallel-Blöcken vergleichen. Verfolgen Sie die Einstiegspunkte von ForEach-Object -Parallel und Write-Debug, um festzustellen, warum der Debug-Schalter ignoriert wird, und überprüfen Sie anschließend, dass der parallele Block die erwarteten Debug-Zeilen erzeugt und dabei DebugPreference berücksichtigt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
shell
Bereich
cli
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
38/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.