Powershell在哈希表中添加变量

时间:2017-10-19 12:44:34

标签: powershell

在我的代码中,我需要呈现键值对,但其中一个键值是数组。我理解在Powershell中你创建的可以创建一个带有哈希表的数组。我正在努力的是如何在哈希表中将键的值变为变量

我在python中的原始代码是:

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中,地址数组没有值。

有人可以就此代码提出一些建议,以及我做错了什么。

提前致谢

3 个答案:

答案 0 :(得分:0)

您的代码可以使用。

c.Wait()

如果您希望它输出值,那么您需要考虑如何首先代表它。

答案 1 :(得分:0)

你把它们放在一个数组中,所以你只需要引用它们。

实施例。$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
}

答案 2 :(得分:0)

正如其他提到的那样,数据存在,但不会通过控制台显示。 我的建议,特别是如果你有多个记录,是为名称/地址和号码/城市/道路创建一个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}