Arrays 如何将嵌套的任意关联数组值集写入powershell中的.psd1文件?
我有一个通过编程生成的powershell数组对象,它包含数组中的数组,数组中的数组,有时称为“属性包”或“哈希表”,但我认为它在大多数本机powershell术语中本机称为“包含数组的数组” 例如:Arrays 如何将嵌套的任意关联数组值集写入powershell中的.psd1文件?,arrays,powershell,hashtable,propertybag,Arrays,Powershell,Hashtable,Propertybag,我有一个通过编程生成的powershell数组对象,它包含数组中的数组,数组中的数组,有时称为“属性包”或“哈希表”,但我认为它在大多数本机powershell术语中本机称为“包含数组的数组” 例如: @{ Version = '1.0.0' Name = 'thing' Revision = 'c3a89cd20e19bb82f41e95e0806edc5b6cfd224e' Date = '2016-12-09' Build = '1234' Conte
@{
Version = '1.0.0'
Name = 'thing'
Revision = 'c3a89cd20e19bb82f41e95e0806edc5b6cfd224e'
Date = '2016-12-09'
Build = '1234'
Contents = @{
"index.html" = "23dd7b993f40bb3ae8848fe104b3b767"
}
}
生成只将一组特定内容保存到.PSD1文件的函数似乎不够通用。
我想把内存中的数组结构保存到一个PSD1文件中。Powershell中是否存在任何内置方式来持久化具有上述值的内存中变量?
导入PowershellDataFile
的“相反功能”。我猜想它会被称为导出PowershellDatafile,但似乎不存在这样的函数。您是否尝试过使用新的ModuleManifest
?在不知道任何其他细节的情况下,您似乎正在创建与模块中使用的清单文件基本相似的内容。。。但是,即使您的用例不同,您仍然应该能够使用cmdlet
新的ModuleManifest
已经存在了一段时间(至少从v3开始,但我似乎还记得在v2中使用它)。它允许您定义属性的哈希表,并将其保存为.psd1
源于这个问题,我创建(并仍在维护)了一个PowerShell cmdlet,该cmdlet发展为一个。此脚本的最终目标是能够基于正确的PowerShell语法而不是像[JSON
](或[XML
])这样的外来格式在系统之间导出和导入PowerShell对象。这包括区分字节数组和字节数组,但也要正确接受(和格式化)单例。
输出是
[ScriptBlock]
,可以轻松地保存为表达式。关键是(根据使用情况)它可能会在最终调用(c.q.)它时创建一个安全漏洞(请参见:)。无论如何,我还包括了一个
-Explore
参数,我认为该参数提供的输出与PSD1
PowerShell数据文件所需的输出完全相同。实际上,我以前从未考虑过这种用法,但现在正考虑将此参数别名,并在下一个版本中为PSD1
文件赋予它唯一的含义。换言之:
$Data = @{
Version = '1.0.0'
Name = 'thing'
Revision = 'c3a89cd20e19bb82f41e95e0806edc5b6cfd224e'
Date = '2016-12-09'
Build = '1234'
Contents = @{
"index.html" = "23dd7b993f40bb3ae8848fe104b3b767"
}
}
ConvertTo-Expression -Explore $Data # | Out-File .\MyData.psd1
返回一个[ScriptBlock]
,该表达式在导出到文件或仅显示时自动转换为以下表达式:
@{
'Date' = '2016-12-09'
'Revision' = 'c3a89cd20e19bb82f41e95e0806edc5b6cfd224e'
'Version' = '1.0.0'
'Build' = '1234'
'Contents' = @{'index.html' = '23dd7b993f40bb3ae8848fe104b3b767'}
'Name' = 'thing'
}
我只是想知道在不进行文本操作的情况下如何修改psd1…及时的问题!编写了几个函数,可以实现您想要的功能:
Export PSData
和Write powershell hashtable
Export Clixml有什么问题吗?因为我想将其作为.psd1加载。我想我可以直接使用trip,但为什么不在PSD1中也有往返呢?这是一个很好的问题,我建议在您的答案中添加一个链接。请注意,这些不是您正在处理的数组-仅是[嵌套]哈希表([hashtable]
([System.Collections.hashtable]
)的实例)。