PS Пользовательский объект хорошо подходит для хранения ваших данных. Рассмотрим
$o = [PSCustomObject]@{
'Name' = 'dev'
'Server' = 'Server1'
'Instance' = '\dev'
'Port' = '50000'
}
Теперь объект $o
содержит NoteProperty
членов, содержащих данные. Доступ достаточно прост:
$o.server+$o.instance+','+$o.port
Server1\dev,50000
Хеш-таблицы в Powershell создаются со встроенным синтаксисом: $myHashTable = @{}
.
Небольшая демонстрация того, как работать с хеш-таблицами, приведена в порядок. Давайте сначала заполним список вышеупомянутых пользовательских объектов. Вот так
# Empty array
$l = @()
# Add some servers
$l += [PSCustomObject]@{
'Name' = 'dev'
'Server' = 'Server1'
'Instance' = '\dev'
'Port' = '50000'
}
$l += [PSCustomObject]@{
'Name' = 'test'
'Server' = 'Server1'
'Instance' = '\test'
'Port' = '50001'
}
$l += [PSCustomObject]@{
'Name' = 'qa'
'Server' = 'Server1'
'Instance' = '\qa'
'Port' = '50002'
}
$l += [PSCustomObject]@{
'Name' = 'prod'
'Server' = 'Server2'
'Instance' = '\prod'
'Port' = '50000'
}
Теперь есть список объектов сервера, но сложно получить доступ к конкретному. Индекс сервера в списке должен быть известен, или список должен быть найден иным образом.
Рассмотрим хеш-таблицу: ее содержимое можно получить на основе ключа. Давайте использовать свойство Name
в качестве ключа и добавим серверы в хеш-таблицу:
# Empty hashtable
$ht = @{}
# Iterate server list and add each PSObject into the hasthtable
$l | % { $ht.add($_.name, $_ )}
# Print results
$ht
Name Value
---- -----
qa @{Name=qa; Server=Server1; Instance=\qa; Port=50002}
dev @{Name=dev; Server=Server1; Instance=\dev; Port=50000}
prod @{Name=prod; Server=Server2; Instance=\prod; Port=50000}
test @{Name=test; Server=Server1; Instance=\test; Port=50001}
#Access the prod server object
$ht.prod
Name Server Instance Port
---- ------ -------- ----
prod Server2 \prod 50000
# Get production's port
$ht.prod.port
50000
# Generate a connection string to prod
"Server={0},{1}" -f $($ht.prod.server+$ht.prod.instance), $ht.prod.port
Server=Server2\prod,50000
Что касается использования файловой хеш-таблицы, найдите Export-Clixml
и Import-Clixml
.