powershell - powershell 哈希表动态键
问题描述
我想问你关于哈希表(powershell)中的动态嵌套键的问题。我已经做了一些研究,但我找不到答案。
# I got this hash structure, works fine
$Hashtable = @{}
$Hashtable.Maincategory = @{}
$Hashtable.Maincategory.Subcategory = @{}
$Hashtable.Maincategory.Subcategory.MyProperty = @{ 'property' = 'value'}
$Hashtable.Maincategory.Subcategory.MyProperty
Name Value
---- -----
property value
# I want dynamic path to my property
$MainAndSubCategory = [string]'Maincategory.Subcategory'
$Hashtable.$MainAndSubCategory.MyProperty # doesn't work
$Hashtable."$MainAndSubCategory".MyProperty # doesn't work
$Hashtable."$($MainAndSubCategory)".MyProperty # doesn't work
$Hashtable."$(Get-Variable -Name 'MainAndSubCategory' -ValueOnly)".MyProperty # doesn't work
我会很感激建议,在此先感谢。
解决方案
可以构建一个字符串,然后使用Invoke-Expression
. 请注意,初始$
字符已转义。
$Hashtable = @{}
$Hashtable.Maincategory = @{}
$Hashtable.Maincategory.Subcategory = @{}
$Hashtable.Maincategory.Subcategory.MyProperty = @{ 'property' = 'value'}
$Hashtable.Maincategory.Subcategory.MyProperty
$MainAndSubCategory = 'Maincategory.Subcategory'
Invoke-Expression -Command "`$Hashtable.$MainAndSubCategory.MyProperty"
需要注意的一件事是,任何可以设置字符串值的东西都可能注入不需要的代码。
推荐阅读
- javascript - Jitsi meet APIpersistnet room with password
- ruby-on-rails - 未初始化的常量 AuthenticationController
- flutter - 如何扩展这个lottie动画以填满整个屏幕 - Flutter
- mysql - PHPMailer 逗号分隔的电子邮件
- amazon-dynamodb - 我可以在 Dynamodb 中使用复合键作为分区键吗?
- javascript - React 路由器 dom 整页重新加载
- swift - 如何修复“源文件中的编辑器占位符”?
- android - Paho MQTT 未将 Android 工作室连接到 Mosquitto 代理
- html - 上传到网络服务器时链接文件不起作用
- ionic-framework - ion-libel positon="floating" 不适用于离子输入占位符