我正在尝试使用优秀的Spectre.Console在powershell中创建良好的交互式提示。到目前为止,我可以使用以下方法获得与工作等效的简单读取主机:
Add-Type -AssemblyName ".\path\to\Spectre.Console.dll"
[Spectre.Console.AnsiConsole]::Ask("Test Ask","Test Default")它将产生:
Test Ask (Test Default): Test 123
Test 123但是,当我试图访问“类型化”类时,如下所示:
$select = [Spectre.Console.SelectionPrompt]我知道错误:
InvalidOperation: C:\path\to\proj\testing.ps1:7:11
Line |
7 | $select = [Spectre.Console.SelectionPrompt]
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Unable to find type [Spectre.Console.SelectionPrompt].查看幽灵文档,我可以看到这个类需要一个返回类型,所以我猜想它找不到类,因为我不太清楚如何在Posh中为它提供一个类型。我尝试过一些变体,例如添加::New(),::Prompt(),并在对象前面加上字符串,但是它总是找不到类型。
我能够在没有问题的情况下在C#中实现等效的工作,但如果可能的话,我希望避免编写一个包装类来使它以高级的形式运行。
Name Value
---- -----
PSVersion 7.2.5
PSEdition Core
GitCommitId 7.2.5
OS Microsoft Windows 10.0.19043
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0发布于 2022-08-14 07:45:03
我发了这篇文章5分钟后就算出来了。
恰当的术语是仿制药,通过powershell访问此类类的方法如下:
[Spectre.Console.SelectionPrompt[string]]::New()它成功地实例化具有返回类型字符串的新对象。
https://stackoverflow.com/questions/73349863
复制相似问题