创建哈希表,其中键具有多个数组值
Create Hashtable where key has multiple array values
我正在尝试使用 PowerShell 创建一个散列 table,其中键是一个服务器名,它有多个值,其中一些是数组。
密钥 = 服务器名称
值:
ServerID(单个 ID 值)
GroupIDs(ID 值数组,绑定到下面的特定组名称)
GroupName(值数组,与上面数组中的特定组 ID 相关联)
我正在遍历服务器列表并尝试构建它。
$ServerHashTable = @{}
$ServerHashTable.ServerName = @()
$ServerHashTable.ServerID = @()
$ServerHashTable.GroupName = @()
$ServerHashTable.GroupID = @()
$ServerHashTable.ServerName += $ServerName
$ServerHashTable.ServerID += $ServerID
$ServerHashTable.GroupName += $GroupName
$ServerHashTable.GroupID += $GroupID
我遇到的问题是密钥似乎不是服务器名,我不确定如何在添加时 link GroupID 和 GroupName。
感谢您对此的任何帮助
看起来您可能想要使用的数据结构是一个对象,而不是哈希表,它是 key/value(单数)。
$ServerName = 'ExampleServerName'
$ServerID = 12345
$GroupName = @('ExampleGroup1','ExampleGroup2')
$GroupIDs = @(1,2,3)
$Servers = @()
$Servers += [pscustomobject]@{
ServerName = $ServerName
ServerID = $ServerID
GroupName = $GroupName
GroupID = $GroupID
}
然后你可以使用 Where-Object
来过滤名称
$Servers | Where-Object {$_.ServerName -eq 'ExampleServerName'}
请注意,[pscustomobject]
类型加速器是版本 3 或更新版本。早期版本需要使用New-Object
.
我认为您误解了哈希表的工作原理。在您的例子中,ServerName
、ServerID
、GroupName
和 GroupID
都是键。每个都有一个数组作为对应的值。
不清楚您要做什么,但自定义对象的集合可能更合适。如何构建它们将取决于您如何收集/循环数据,但一般来说,您可以这样做:
$servers = @()
$servers += [PsCustomObject]@{
ServerName = $serverName
ServerID =$serverID
GroupName = $groupName
GroupID = $groupID
}
我正在尝试使用 PowerShell 创建一个散列 table,其中键是一个服务器名,它有多个值,其中一些是数组。
密钥 = 服务器名称
值:
ServerID(单个 ID 值)
GroupIDs(ID 值数组,绑定到下面的特定组名称)
GroupName(值数组,与上面数组中的特定组 ID 相关联)
我正在遍历服务器列表并尝试构建它。
$ServerHashTable = @{}
$ServerHashTable.ServerName = @()
$ServerHashTable.ServerID = @()
$ServerHashTable.GroupName = @()
$ServerHashTable.GroupID = @()
$ServerHashTable.ServerName += $ServerName
$ServerHashTable.ServerID += $ServerID
$ServerHashTable.GroupName += $GroupName
$ServerHashTable.GroupID += $GroupID
我遇到的问题是密钥似乎不是服务器名,我不确定如何在添加时 link GroupID 和 GroupName。
感谢您对此的任何帮助
看起来您可能想要使用的数据结构是一个对象,而不是哈希表,它是 key/value(单数)。
$ServerName = 'ExampleServerName'
$ServerID = 12345
$GroupName = @('ExampleGroup1','ExampleGroup2')
$GroupIDs = @(1,2,3)
$Servers = @()
$Servers += [pscustomobject]@{
ServerName = $ServerName
ServerID = $ServerID
GroupName = $GroupName
GroupID = $GroupID
}
然后你可以使用 Where-Object
来过滤名称
$Servers | Where-Object {$_.ServerName -eq 'ExampleServerName'}
请注意,[pscustomobject]
类型加速器是版本 3 或更新版本。早期版本需要使用New-Object
.
我认为您误解了哈希表的工作原理。在您的例子中,ServerName
、ServerID
、GroupName
和 GroupID
都是键。每个都有一个数组作为对应的值。
不清楚您要做什么,但自定义对象的集合可能更合适。如何构建它们将取决于您如何收集/循环数据,但一般来说,您可以这样做:
$servers = @()
$servers += [PsCustomObject]@{
ServerName = $serverName
ServerID =$serverID
GroupName = $groupName
GroupID = $groupID
}