Я думаю, что вы ищете external reference
.Это может быть сделано многими способами .Вот некоторые из них:
Переменная Hashtable / Dictionary:
#declare hashtable type variable.
$ht = @{}
#populate it with key/value items.
$ht.Add('Milan','email1@company.it')
$ht.Add('London','email2@company.it')
$ht.Add('Chicago','email3@company.it')
#input city name Milan
$city = 'Milan'
#now call hashtable variable by its key Milan
$ht[$city]
#output
email1@company.it
#usage example
Set-UserProperty -City $city -Email $ht[$city]
Строка XML:
[xml]$xml = @"
<?xml version="1.0" encoding="utf-8" ?>
<Dictionary>
<City name="Milan">
<Email>email1@company.it</Email>
</City>
<City name="London">
<Email>email2@company.it</Email>
</City>
<City name="Chicago">
<Email>email3@company.it</Email>
</City>
</Dictionary>
"@
$xml.Dictionary.City | Where-Object {$_.name -eq $city} | Select -ExpandProperty Email
Строка CSV:
$city = 'Milan'
$CSV = @"
"City","Email"
"Milan","email1@company.it"
"London","email2@company.it"
"Chicago","email3@company.it"
"@ | ConvertFrom-Csv
($CSV | Where-Object {$_.City -eq $city}).Email
#output
email1@company.it
Файлы XML / CSV:
- Создание файла XML или CSV с тем же содержимымкак у соответствующих
here string
(@" ... "@
).Например:
myfile.xml:
<?xml version="1.0" encoding="utf-8" ?>
<Dictionary>
<City name="Milan">
<Email>email1@company.it</Email>
</City>
<City name="London">
<Email>email2@company.it</Email>
</City>
<City name="Chicago">
<Email>email3@company.it</Email>
</City>
</Dictionary>
myfile.csv:
"City","Email"
"Milan","email1@company.it"
"London","email2@company.it"
"Chicago","email3@company.it"
Заменить here string
(@" ... "@
) в приведенном выше коде на Get-Content -Raw -Path 'myfile.xml'
или Get-Content -Raw -Path 'myfile.csv'
соответственно.Например:
[xml] $ xml = Get-Content -Raw -Path 'myfile.xml'
или
$ CSV = Get-Content -Raw-Path 'myfile.csv'
Остальной код остается неизменным.