У меня проблема, которую я так и не смог решить, хотя проверил много ресурсов.Возможно, я пропустил очень важный шаг, так как я не являюсь разработчиком 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
Есть идеи?Не могли бы вы направить меня в правильном направлении?
Спасибо!