PowerShell中有解析TOML文件的模块吗?

问题描述 投票:0回答:2

我正在尝试寻找适用于 PowerShell 的 TOML 文件解析器。

我在 PowerShell Gallery 或预装的 PowerShell 功能中找不到任何有关它的信息。

powershell toml
2个回答
8
投票

事实上,截至撰写本文时,PowerShell Gallery中似乎还没有用于 TOML 解析PowerShell 模块:

但是,NuGet Gallery中有一个可用的.NET包:

  • Tomlyn,其源代码存储库位于这里

虽然您

可以使用 PowerShell 中的 NuGet 包,但不幸的是,从 PowerShell Core 7.2.2 开始,这样做并不简单。

    这个答案
  • 讨论了当前的陷阱和未来潜在的增强功能。

    在这种特殊情况下,由于该包没有依赖项
  • ,您可以通过
  • Install-Package下载该包,如下所示:

    
    

    使用示例

# Determine the package's local installation location. # If it isn't installed, install it first, in the current user's scope. while (-not ($installDir = (Get-Package -ErrorAction Ignore -ProviderName NuGet Tomlyn).Source)) { $null = Install-Package -Scope CurrentUser -ErrorAction Stop -ProviderName NuGet Tomlyn } # Load the package's assembly into the session. Add-Type -ErrorAction Stop -LiteralPath (Join-Path $installDir '../lib/netstandard2.0/Tomlyn.dll') # Define a sample TOML string to parse. $tomlStr = @' global = "this is a string" # This is a comment of a table [my_table] key = 1 # Comment a key value = true list = [4, 5, 6] '@ # Parse the TOML string into an object mod)el (nested dictionaries). $tomlTable = [Tomlyn.Toml]::ToModel($tomlStr) # Output the '[my_table]' section's 'list' value. # -> 4, 5, 6 # IMPORTANT: Use ['<key>'] syntax; .<key> syntax does NOT work. $tomlTable['my_table']['list'] 注:

对于字典类型,PowerShell

通常
    允许通过成员访问运算符
  • ['my_table']

    (例如.)互换使用索引语法(例如

    .my_table
    )和点表示法。
    
    
    但是,

    [Tomlyn.Model.Table]
  • 类型的字典
  • 支持点表示法,例如由[Tomlyn.Toml]::ToModel()返回的字典,大概是因为该类型仅实现了

    generic
    IDictionary`2
    接口,而不是其非泛型对应,IDictionary
    
    
    请参阅 
    GitHub 问题 #17190

    进行讨论。
  • 是的,请参见此处:
https://github.com/jborean93/PSToml

0
投票

© www.soinside.com 2019 - 2024. All rights reserved.