创建Hashtable,其中key具有多个数组值

时间:2018-05-15 21:40:25

标签: arrays powershell hashtable

我正在尝试使用PowerShell创建一个哈希表,其中键是一个服务器名,它有多个值,其中一些是数组。

Key = SERVERNAME

值:

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

我遇到的问题是该密钥似乎不是服务器名称,我不确定在添加它们时如何链接GroupID和GroupNames。

感谢您对此的任何帮助

2 个答案:

答案 0 :(得分:1)

您可能想要使用的数据结构看起来像是一个对象而不是一个键/值(单数)的哈希表。

$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

答案 1 :(得分:1)

我认为你误解了哈希表是如何工作的。在您的情况下,library(shiny) ui <- fluidPage( sidebarLayout( sidebarPanel( fileInput("GimmeCSV", "Upload a CSV", multiple = F), textInput("inFile", "Name for Output"), downloadLink("downloadData", "Download") ), mainPanel( tableOutput("table.preview"), tableOutput("table.output") ) ) ) server <-function(input,output){ inputFile <- reactiveValues(file = NULL) outputFile <- reactiveValues(file=NULL) observeEvent(input$GimmeCSV, { inFile <- input$GimmeCSV data <- read.csv(inFile$datapath, header=TRUE, sep=";") inputFile$file <- data }) output$table.preview <- renderTable({ head(inputFile$file) }) output$table.output <- renderTable({ tbl <- inputFile$file outputFile$file <- tbl tbl }) output$downloadData <- downloadHandler( filename = function() { paste(input$inFile, '.csv', sep='') }, content = function(file) { write.csv(outputFile$file, file) } ) } shinyApp(ui, server) ServerNameServerIDGroupName都是关键。每个都有一个数组作为相应的值。

目前尚不清楚您正在尝试做什么,但自定义对象的集合可能更合适。你如何构建它们将取决于你如何收集/循环数据,但一般来说,你可以做这样的事情:

GroupID