ValidateSet/Register-ArgumentCompleter/Enum completions does not work correctly
See original GitHub issueIssue Description
I am experiencing a problem with… completions failing for 2nd entry.
Notice that it works on 14th line, and then very same command fails on line 10th.
function Get-GPOZaurrPermissionSummary {
[cmdletBinding()]
param(
[validateSet('AuthenticatedUsers', 'DomainComputers', 'Unknown', 'WellKnownAdministrative', 'NotWellKnown', 'NotWellKnownAdministrative', 'NotAdministrative', 'Administrative', 'All')][string[]] $Type = 'All',
[validateSet('Allow', 'Deny', 'All')][string] $PermitType = 'All',
[ValidateSet('GpoApply', 'GpoEdit', 'GpoCustom', 'GpoEditDeleteModifySecurity', 'GpoRead', 'GpoOwner', 'GpoCustomCreate', 'GpoCustomOwner')][string[]] $IncludePermissionType,
[ValidateSet('GpoApply', 'GpoEdit', 'GpoCustom', 'GpoEditDeleteModifySecurity', 'GpoRead', 'GpoOwner', 'GpoCustomCreate', 'GpoCustomOwner')][string[]] $ExcludePermissionType,
[Microsoft.GroupPolicy.GPPermissionType[]] $Test,
[alias('ForestName')][string] $Forest,
[string[]] $ExcludeDomains,
[alias('Domain', 'Domains')][string[]] $IncludeDomains,
[System.Collections.IDictionary] $ExtendedForestInformation,
[string] $Separator
)
I tried to replicate it to give you reproducible code but I just can’t. I’m experiencing it across all my modules and I can’t pinpoint it to what I’m doing wrong. It fails the same way for both [Microsoft.GroupPolicy.GPPermissionType[]]
which is an enum, but also have the same issue with ValidateSet and Register-ArgumentCompleter that makes me want to cry 😃
Attached Logs
1601583262-5511c227-6bca-4824-9bad-6f29a894ed501601499246405.zip
Follow the instructions in the README about capturing and sending logs.
Environment Information
Visual Studio Code
Name | Version |
---|---|
Operating System | Windows_NT x64 10.0.19042 |
VSCode | 1.49.2 |
PowerShell Extension Version | 2020.9.0 |
PowerShell Information
Name | Value |
---|---|
PSVersion | 5.1.19041.541 |
PSEdition | Desktop |
PSCompatibleVersions | 1.0 2.0 3.0 4.0 5.0 5.1.19041.541 |
BuildVersion | 10.0.19041.541 |
CLRVersion | 4.0.30319.42000 |
WSManStackVersion | 3.0 |
PSRemotingProtocolVersion | 2.3 |
SerializationVersion | 1.1.0.1 |
Visual Studio Code Extensions
Visual Studio Code Extensions(Click to Expand)
Extension | Author | Version |
---|---|---|
better-toml | bungcip | 0.3.2 |
csharp | ms-dotnettools | 1.23.2 |
errorlens | usernamehw | 3.2.2 |
github-linker | gimenete | 0.2.3 |
gitlens | eamodio | 10.2.2 |
line-endings | steditor | 1.0.3 |
LogFileHighlighter | emilast | 2.9.0 |
markdown-all-in-one | yzhang | 3.3.0 |
material-icon-theme | PKief | 4.3.0 |
open-in-browser | techer | 2.0.0 |
powershell-preview | ms-vscode | 2020.9.0 |
project-manager | alefragnani | 11.3.0 |
rainbow-brackets | 2gua | 0.0.6 |
run-in-powershell | tobysmith568 | 1.1.0 |
swdc-vscode | softwaredotcom | 2.3.12 |
vscode-markdownlint | DavidAnson | 0.37.0 |
vscode-toggle-quotes | BriteSnow | 0.3.3 |
vscode-wakatime | WakaTime | 4.0.8 |
vscode-yaml | redhat | 0.11.1 |
xml | DotJoshJohnson | 2.5.1 |
Issue Analytics
- State:
- Created 3 years ago
- Comments:25 (12 by maintainers)
Top Results From Across the Web
Looping Register-ArgumentCompleter produces incorrect ...
The motivation here is that I can't directly set the module function's input parameters to autoconvert into the enum type (which would properly...
Read more >Tab-completion of command based upon a folderlist?
If it is, it runs the Register-ArgumentCompleter command (3 times in this case). If it's not, it displays a warning (you could change...
Read more >Argument Completion Attributes - powershell.one
Argument completion will not work in the script pane where the function was defined. It works only in the console and other open...
Read more >The classy way to complete and validate PowerShell ...
Use the argument completer attribute with a PowerShell function or Class. If you won't target older versions. The function is probably more ...
Read more >Using a Custom Enum To Get Tab-Completion on a Parameter
PowerShell already has support for doing this kind of thing via the ValidateSet parameter attribute. This attribute not only prevents users ...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Also here’s an editor command you can use to test if
TabExpansion2
gives the same result:Microsoft.VSCode_profile.ps1
keybindings.json
COol 😄 I will be using the comma workaround in near future.