PowerShell / PowerShell/vscode-powershell

PowerShell Integrated Console: "Value cannot be null" for missing mandatory parameter when debugging

Offen
#1,969 6 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Area-Debugging Issue-Bug
Vorherrschende Sprache
TypeScript
Sterne
1.9k
Forks
548
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Issue Type: Bug

Steps to reproduce

Create a .ps1 script file with the following contents:

class MyNewClass {
    [string] $DummyVar
}

function Get-Details {
    param (
        [Parameter(Mandatory)][MyNewClass] $ClassVar,
        [Parameter(Mandatory)][String] $StringVar
    )
    $ClassVar | Out-Host
}

Get-Details

Run the script from a PowerShell terminal window in VSCode.

Expected behavior

Using an explicit "pwsh" terminal inside VSCode, or an external Windows PowerShell or PowerShell Core shell, the above code gives:

cmdlet Get-Details at command pipeline position 1
Supply values for the following parameters:
ClassVar:

Actual behavior

From the PowerShell Integrated Console, the same script results in:

Value cannot be null.
Parameter name: type
At C:\Users\myuser\Documents\Development\PowerShell\TestParamNull.ps1:14 char:1
+ Get-Details
+ ~~~~~~~~~~~
+ CategoryInfo          : OperationStopped: (:) [], ArgumentNullException
+ FullyQualifiedErrorId : System.ArgumentNullException

If I explicitly call "pwsh" from inside this same integrated console, the script then works as expected.

Best guesses are that the issue is occurring when the debugger is involved, or that your readline is choking because it doesn't know how to request the user enters a custom class?

Environment data

Explicit pwsh

PS> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      6.2.0
PSEdition                      Core
GitCommitId                    6.2.0
OS                             Microsoft Windows 10.0.17763
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0
PS> $PSHOME
C:\Program Files\PowerShell\6

PowerShell Integrated Console

PS>$PSVersionTable
Name                           Value
----                           -----
PSVersion                      6.2.0
PSEdition                      Core
GitCommitId                    6.2.0
OS                             Microsoft Windows 10.0.17763
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0
PS> $PSHOME
C:\Program Files\PowerShell\6

VSCode PowerShell Debugger Launch Config

        {
            "name": "PowerShell Launch Current File",
            "type": "PowerShell",
            "request": "launch",
            "script": "${file}",
            "args": [],
            "cwd": "${file}"
        }

Extension version: 1.12.1
VS Code version: Code 1.34.0 (a622c65b2c713c890fcf4fbf07cf34049d5fe758, 2019-05-15T21:59:37.030Z)
OS version: Windows_NT x64 10.0.17763

System Info
Item Value
CPUs Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz (8 x 2904)
GPU Status 2d_canvas: enabled
checker_imaging: disabled_off
flash_3d: enabled
flash_stage3d: enabled
flash_stage3d_baseline: enabled
gpu_compositing: enabled
multiple_raster_threads: enabled_on
native_gpu_memory_buffers: disabled_software
rasterization: enabled
surface_synchronization: enabled_on
video_decode: enabled
webgl: enabled
webgl2: enabled
Load (avg) undefined
Memory (System) 31.81GB (14.95GB free)
Process Argv
Screen Reader no
VM 0%

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

Reproduzieren Sie das bereitgestellte MyNewClass/Get-Details-Skript aus der PowerShell Integrated Console und vergleichen Sie es mit einem expliziten pwsh-Terminal. Beginnen Sie damit, den Debugger- und Integrated-Console-Parameter-Prompting-Pfad anhand der bereitgestellten PowerShell Debugger Launch Config nachzuverfolgen. Erledigt ist die Aufgabe, wenn die Integrated Console zur Eingabe des fehlenden obligatorischen Parameters auffordert, statt einen Nulltypfehler zu melden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

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

Neue Issues direkt in Ihr Postfach

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