Powershell的添加变量在哈希表

问题描述:

在我的代码我需要呈现键值对更关键的值中的一个是一个数组。我知道你创建的Powershell可以用散列表创建一个数组。我所挣扎的是我怎么能有哈希表中的键的值是从Python中的变量Powershell的添加变量在哈希表

我原来的代码是:

data: {"name":"{{name}}","address" : [{"Number":"{{number}}","Road":"{{road}}","City":"{{city}}”}]} 

我的代码示例如下输入:

$number = "10" 

$road = "Downing Street" 

$city = "London" 

$address = @{"Number" = "$number"; "Road" = "$road"; City = "$city"} 

$data = @{ 
    name = $name 
    address = $address 
} 

下面是从Powershell的变量输出

PS C:\tmp> $address 

Name       Value                       
----       -----                       
Number       10                       
Road       Downing Street                    
City       London 



PS C:\tmp> $data = @{ 
    name = $name 
    address = $address 
} 

PS C:\tmp> $data 

Name       Value                       
----       -----                       
name       prodsql01                      
address      {Number, Road, City} 

$data地址数组没有它的值。这个代码和我在做什么错

是否有人可以给些建议。

在此先感谢

+0

'$ data'确实有值,它只是不显示它们(检查'$ data.address')。什么是所需的输出格式?你可以做'$ data | ConvertTo-Json'如果JSON输出正常。 –

你的代码的工作寿。

PS> $data 

Name       Value 
----       ----- 
name       prodsql01 
address      {Number, Road, City} 

PS> $data.address 

Name       Value 
----       ----- 
Number       10 
Road       Downing Street 
City       London 

PS> $data.address.road 
Downing Street 

如果你想它输出的值,那么你需要考虑你将如何首先代表它。

你把它们放在一个数组,所以你只需要参考各一个。

Ex。 $address.Road

$number = "10" 

$road = "Downing Street" 

$city = "London" 

$name = "prodsql01" 

$address = @{"Number" = "$number"; "Road" = " $road"; City = " $city"} #I added spaces here 

$data = @{ 
    name = $name 
    address = $address.Number + $address.Road + $address.City 
} 

作为其它mentionned,数据是存在的,但不通过控制台显示。 我的建议,特别是如果你有多个记录,是创建一个PSobject两个名称/地址和号码/城市/公路

与论文更换您的$address$data分配线:

$address = New-Object psobject -Property @{"Number" = "$number"; "Road" = "$road"; City = "$city"} 

$data = new-object psobject -Property @{name = $name;address = $address} 

你的输出现在这个样子。

name  address          
----  -------          
prodsql101 @{Number=10; Road=Downing Street; City=London}