Не удалось найти ошибку типа [System.Management.Automation.IValidateSetValuesGenerator] в Powershell - PullRequest
1 голос
/ 26 марта 2019

У меня проблема, которую я так и не смог решить, хотя проверил много ресурсов.Возможно, я пропустил очень важный шаг, так как я не являюсь разработчиком Windows, и у меня очень мало знаний о powershell.

Вот моя версия PS.

Name                           Value                                                                                                      
----                           -----                                                                                                      
PSVersion                      5.1.14409.1018                                                                                             
PSEdition                      Desktop                                                                                                    
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                                    
BuildVersion                   10.0.14409.1018                                                                                            
CLRVersion                     4.0.30319.42000                                                                                            
WSManStackVersion              3.0                                                                                                        
PSRemotingProtocolVersion      2.3                                                                                                        
SerializationVersion           1.1.0.1  

Я хочу добавить динамическизаполненный массив значений для одного из флагов моей функции (например, COMPREPLY в bash).

Я написал следующий пример на основе источников, которые я проверил онлайн.

class GetProfiles : System.Management.Automation.IValidateSetValuesGenerator
{
    [String[]] GetValidValues()
    {
        $Paths = "D:\Profiles"
        $Profiles = ForEach ($Path in $Paths)
        {
            if (Test-Path $Path)
            {
                (Get-ChildItem $Path).BaseName
            }
        }
        return [string[]] $Profiles
    }
}

function global:Activate()
{
    [CmdletBinding()]
    Param
    (
        [ValidateSet([GetProfiles])]
        [string]$Profile="",
    )

    Write-Host $Profile
}

Но мой код выдает эту ошибку.

At D:\projects\activate.ps1:40 char:20 + ... SoundNames : System.Management.Automation.IValidateSetValuesGenerator + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Unable to find type [System.Management.Automation.IValidateSetValuesGenerator]. + CategoryInfo : ParserError: (:) [], ParseException + FullyQualifiedErrorId : TypeNotFound

У меня есть следующий dll, и я попытался добавить его в начало скрипта с помощью Add-Type -Path, не сработало: /.

C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0__31bf3856ad364e35\System.Management.Automation.dll

Есть идеи?Не могли бы вы направить меня в правильном направлении?

Спасибо!

1 Ответ

0 голосов
/ 26 марта 2019

, который доступен только в PS6 +.эта страница ...

Интерфейс IValidateSetValuesGenerator (System.Management.Automation) |Microsoft Docs
- https://docs.microsoft.com/en-us/dotnet/api/system.management.automation.ivalidatesetvaluesgenerator?view=pscore-6.0.0

... делает это довольно ясно.[ ухмылка ] плюс, когда вы выбираете Windows Powershell, он показывает это ...

Запрошенная страница недоступна для Windows PowerShell SDK 1.1.0.Вы были перенаправлены на последнюю версию продукта, для которой доступна эта страница.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...