有没有办法告诉powershell从一个字符串构造一个哈希表,该字符串是使用正常语法格式化创建哈希表内联的?
例如,有没有办法做类似的事情:
$fooHashString = "@{key='value'}
$fooHash = TellPowershellToEvaluateSpecialStringExpressions($fooHashString)
$fooHash
Name Value
---- -----
key value
答案 0 :(得分:3)
$fooHashString = "@{key='value'}
$fooHash = Invoke-Expression $fooHashString
$fooHash
Name Value
---- -----
key value
答案 1 :(得分:1)
使用Invoke-Expression被认为是代码气味的原因有很多。有关此
的详细信息,请参阅以下博文如果您使用的是PowerShell 3.0或更高版本,则另一种方法是使用ConvertFrom-StringData。您可以在MSDN页面ConvertFrom-StringData
上找到有关如何使用此功能的详细信息在您的情况下,您可以使用以下内容来创建HashTable
public class MainActivity extends AppCompatActivity
implements TopListCursorAdapter.TopListClickListener // see here
// private ... topAdapter, bottomAdapter;
@Override
public void onTopListClick(int position) {
// Make sure parameters match the interface ^^^
// TODO: Get data from topAdapter
// TODO: database update or arraylist.add to change bottomAdapter
bottomAdapter.notifyDataSetChanged(); // Update the UI
}
// Other code can remain the same
或者,您可以在此处使用此字符串生成内容
$HashString = "key1=value1 `n key2=value2"
ConvertFrom-StringData -StringData $HashString
不幸的是,如果在字符串中包含$HashString = @'
key1 = value1
key2 = value2
'@
ConvertFrom-StringData -StringData $HashString
,这将无效,因为\
CmdLet将其视为转义字符。
答案 2 :(得分:0)
我认为这里是一个更好的答案:
https://www.reddit.com/r/PowerShell/comments/2vqxpu/hashtable_string_to_hashtable_object/cokcfmq/
您想使用ScriptBlock
答案 3 :(得分:0)
$fooHashString = "@{key='value'}"
$fooHashString -replace '@{' -replace '}' -replace ';',"`n" -replace "'" |
ConvertFrom-StringData
Name Value
---- -----
key value